KR20070008782A - Method and system of processing kernel patch for prevention of kernel vulnerability - Google Patents
Method and system of processing kernel patch for prevention of kernel vulnerability Download PDFInfo
- Publication number
- KR20070008782A KR20070008782A KR1020050062560A KR20050062560A KR20070008782A KR 20070008782 A KR20070008782 A KR 20070008782A KR 1020050062560 A KR1020050062560 A KR 1020050062560A KR 20050062560 A KR20050062560 A KR 20050062560A KR 20070008782 A KR20070008782 A KR 20070008782A
- Authority
- KR
- South Korea
- Prior art keywords
- kernel
- patch
- module
- vulnerability
- information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
Description
도 1은 종래에 리눅스 커널 보안 취약점을 해소하기 위한 커널 패치 방법을 도시한 개략도이고, 1 is a schematic diagram showing a kernel patch method for solving the Linux kernel security vulnerability in the prior art,
도 2는 본 발명이 적용될 수 있는 일반적인 리눅스 운영체제의 구성도이고, 2 is a configuration diagram of a general Linux operating system to which the present invention can be applied;
도 3은 본 발명에 따라 리눅스 커널의 취약점을 보완하기 위한 커널 패치 방법을 도시한 순서도이고, 3 is a flowchart illustrating a kernel patch method for compensating for a vulnerability of the Linux kernel according to the present invention;
도 4는 본 발명에 의한 커널 취약점 패치 모듈의 동작 절차를 도시한 개략도이며, 4 is a schematic diagram showing an operation procedure of a kernel vulnerability patch module according to the present invention;
도 5는 본 발명에 따라 새로운 커널 취약점이 발견되었을 때 취약점을 보완하기 위한 패치 과정을 도시한 도면이다. 5 is a diagram illustrating a patch process for supplementing a vulnerability when a new kernel vulnerability is found according to the present invention.
<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>
200 : 사용자 응용 프로그램 210 : 시스템 호출 인터페이스 200: user application 210: system call interface
230 : 리눅스 커널 320 : 커널 패치 DB 230: Linux Kernel 320: Kernel Patch DB
400 : 시스템 콜 후킹 모듈 410 : 커널 취약점 방어 모듈 400: system call hooking module 410: kernel vulnerability defense module
420 : 설정모듈 430 : 로그모듈 420: configuration module 430: log module
440 : 프로파일 450 : 로그 데이터 440: Profile 450: log data
발명은 컴퓨터 운영체제의 보안 패치 방법에 관한 것으로, 보다 상세하게는 커널 소스 코드 자체의 보안 취약점(security vulnerability)에 대하여 커널 패치 후 재컴파일하거나 재부팅할 필요 없이 시스템의 보안을 향상시킬 수 있는 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템에 관한 것이다. The present invention relates to a security patch method of a computer operating system, and more particularly, a kernel vulnerability that can improve the security of a system without having to recompile or reboot after a kernel patch against a security vulnerability of the kernel source code itself. It relates to a kernel patch method and system for defending.
일반적으로, 운영체제의 주요 기능은 컴퓨터 시스템의 자원을 관리하는 것이다. 자원들에는 프로세서, 저장장치(메모리, 하드 디스크 등), 입/출력 장치(프린터, 모니터 디스플레이 등), 및 통신 장치(모뎀, 네트워크 인터페이스 등)가 있다. 운영체제 커널은 운영 체제의 핵심 또는 코아 컴포넌트이다. 커널의 기능으로는 프로세스 관리, 프로세스간의 통신(IPC), 인터럽트 처리, 스토리지 할당/반환 지원, 입/출력 활동 지원, 시스템 보안 방법 등이 있다. In general, the primary function of an operating system is to manage the resources of a computer system. Resources include processors, storage devices (memory, hard disks, etc.), input / output devices (printers, monitor displays, etc.), and communication devices (modems, network interfaces, etc.). The operating system kernel is the core or core component of the operating system. Kernel features include process management, interprocess communication (IPC), interrupt handling, storage allocation / return support, input / output activity support, and system security methods.
이러한 운영체제의 핵심 기능을 수행하는 커널의 취약점(vulnerability)을 이용한 공격 익스플로잇(Exploits) 프로그램은 텔넷(telnet), 에프티피(ftp) 등의 응용 프로그램이나 데몬 서비스의 취약점을 이용한 공격 익스플로잇 프로그램들과 달리 특정 서비스의 사용 유무에 상관없이 해킹될 수 있다는 특징이 있다. Attack exploit programs that exploit kernel vulnerabilities that perform the core functions of these operating systems are different from exploit exploit programs that exploit vulnerabilities in applications such as telnet and ftp or daemon services. It can be hacked with or without a specific service.
종래의 운영체제에 대한 보안 기술을 시큐어 오에스(Secure OS) 기술 또는 트러스티드 오에스(Trusted OS) 기술로 불리우고, 주로 주체와 객체간의 보안 등급과 보안 범주에 기반하여 접근통제하는 방식으로 구현되며, 시스템 호출 후킹 기법과 엘케이엠(LKM:Loadable Kernel Module) 방식을 이용하여 주체(사용자나 프로세스)가 특정 객체(파일 등)를 접근하려고 할 때 이를 통제한다. 커널 모듈로 구현된 참조 모니터(Reference Monitor)에 의해 파일 등 모든 자원에 대한 접근 통제가 이루어지며, 이를 토대로 권한이 없는 사용자에 의한 불법적인 접근 또는 외부로부터 악의적인 목적으로 시도되는 해킹은 운영체제 커널에서 강제적으로 차단된다. The security technology of the conventional operating system is called a Secure OS technology or a Trusted OS technology, and is mainly implemented by access control based on the security level and security category between the subject and the object. The hooking technique and the Loadable Kernel Module (LKM) method are used to control when a subject (user or process) tries to access a specific object (file, etc.). The reference monitor implemented as a kernel module controls access to all resources such as files. Based on this, illegal access by unauthorized users or hacking attempted for malicious purposes from outside can be performed by the operating system kernel. Forcibly shut off.
그러나 일부 커널 취약점의 경우에는 로컬 사용자가 자신이 작성한 프로그램을 실행할 권한만 있다면 커널 취약점을 이용한 루트 권한 획득 또는 시스템 작동 중지가 가능하다. 즉, 주체/객체간의 보안 정보에 기반한 접근통제 방식은 응용 프로그램 취약점이 아닌 커널 자체의 취약점을 제거하기 위한 근본적인 해결책이 될 수 없으므로 취약한 핵심 커널 소스 자체의 패치가 추가적으로 필요하다. However, for some kernel vulnerabilities, if a local user only has the authority to execute a program written by the user, it is possible to obtain root privileges or use the system by using a kernel vulnerability. In other words, access control based on security information between subjects / objects cannot be a fundamental solution to eliminate the vulnerability of the kernel itself, not an application vulnerability. Therefore, a patch of the vulnerable core kernel source itself is needed.
이와 관련하여 패치 서버와 클라이언트 구성을 통하여 안전하게 패치를 배포할 수 있는 방법을 제안한 바 있으며, 예를 들어 새롭게 추가되는 패치와 전체 클라이언트들의 패치에 대한 전역 패치 프로파일을 관리하는 패치 매니저를 구비하는 패치 분배 서버와, 패치 분배 서버에 각각 접속된 다수의 클라이언트로 이루어진 시스템에 대해, 각 클라이언트에는 기 설치된 패치에 대한 패치 프로파일을 관리하는 패치 에이전트가 설치하여 패치 관리를 수행한 바 있다. In this regard, we have proposed a way to distribute patches securely through a patch server and client configuration. For example, patch distribution is provided with a patch manager that manages global patch profiles for newly added patches and patches for all clients. For a system consisting of a server and a plurality of clients connected to a patch distribution server, a patch agent that manages a patch profile for pre-installed patches is installed on each client to perform patch management.
그러나 커널 패치가 바이너리 형태로 구성될 경우, 바이너리 업데이트 (Update) 또는 치환으로 시스템의 패치가 가능한 경우에 적용 가능하나 리눅스 커널과 같이 텍스트 형태로 패치가 배포되는 경우에는 적용하기가 어렵다. 따라서 리눅스 커널을 대상으로 하여 취약한 커널 소스 자체의 패치를 위해서는 커널 버전에 따른 패치를 다운받아서 패치해야 한다. However, if the kernel patch is configured in binary form, it can be applied when the system can be patched by binary update or replacement, but it is difficult to apply when the patch is distributed in text form like the Linux kernel. Therefore, in order to patch the vulnerable kernel source itself for the Linux kernel, it is necessary to download the patch according to the kernel version.
리눅스 커널 패치는 오픈 소스 진영에서 제공하는 패치와 배포판 제작 업체에서 제공하는 패치로 나눌 수 있다. 이러한 패치는 커널 버전별로 관리되며 보안 취약점이 발견될 경우마다 발표되는 임시 패치들도 존재한다. 커널 패치는 텍스트 비교 도구를 이용하여 제작되고, 커널 버전에 따라 순서대로 적용해 주어야만 한다. 그리고 패치 적용 후, 커널을 재컴파일하고 시스템을 재부팅하는 과정을 수행해야만 한다. Linux kernel patches can be divided into patches provided by the open source camp and those provided by distribution manufacturers. These patches are managed by kernel version and there are temporary patches released whenever a security vulnerability is found. Kernel patches are created using text comparison tools and must be applied in order, depending on the kernel version. After applying the patch, you must recompile the kernel and reboot the system.
도 1은 종래 방식에 따른 커널 취약점을 보완하기 위한 커널 패치 방법을 도시한 순서도이다. 1 is a flowchart illustrating a kernel patch method for compensating for a kernel vulnerability according to a conventional method.
도 1을 참조하면, 먼저 취약점을 패치할 시스템에 커널 소스가 존재하는지를 검사하고(101), 커널 소스가 시스템 내에 존재하지 않을 경우에는 먼저 커널 소스를 구하여 시스템에 설치해야 한다(102). Referring to FIG. 1, first, it is checked whether a kernel source exists in a system to patch a vulnerability (101), and if a kernel source does not exist in a system, a kernel source must first be obtained and installed in a system (102).
그리고 커널 버전에 해당되는 커널의 취약점을 보완하기 위한 커널 패치를 수집하고(103), 수집된 커널 패치를 적용한다(104). In addition, a kernel patch for supplementing a kernel vulnerability corresponding to a kernel version is collected (103), and the collected kernel patch is applied (104).
여기서, 리눅스 커널 패치는 윈도우에서처럼 특정 업체가 패치를 제작하고 배포하는 단일화된 시스템이 아니며, 다양한 방식의 커널 패치가 제공되고 있다. 커널 패치는 매번 커널이 바뀔 때마다 커널 소스를 다시 받을 필요없이 바뀐 차이점만을 담고 있는 작은 용량의 텍스트 파일로서, 커널 패치에 포함된 내용은 커널의 기능 및 성능 향상과 커널의 보안상 취약점을 제거하기 위한 보안 패치를 포함하고 있다. 그러나 리눅스 커널 패치는 텍스트 비교 도구를 이용하여 제작되는 것이므로, 반드시 커널 버전에 따라 순서대로 적용해야만 한다. 통상, 리눅스 커널 패치를 제작하고 배포하는 주체는 오픈소스 진영과 각 배포판 제작 업체로 나눌 수 있다. 오픈소스 진영의 패치는 공식 패치와 사안 별로 제작하여 배포하는 임시 패치로 나눌 수 있다. Here, the Linux kernel patch is not a unified system for producing and distributing patches by specific vendors as in Windows, and various kernel patches are provided. A kernel patch is a small text file that contains only the differences without having to re-download the kernel source each time the kernel changes. The contents of the kernel patch are intended to improve kernel functionality and performance and eliminate kernel security vulnerabilities. Includes security patches for However, Linux kernel patches are produced using text comparison tools, so they must be applied in order according to the kernel version. Typically, the main producers and distributors of Linux kernel patches can be divided into the open source camp and each distribution vendor. Patches from the open source camp can be divided into official patches and temporary patches produced and distributed on a case-by-case basis.
한편, 커널 소스에 커널 취약점을 제거하는 커널 패치를 적용한 후에는 커널을 컴파일할 준비 작업으로서, 시스템의 환경에 맞도록 커널 설정(105)을 해주어야 하고, 재컴파일해주어야 하며(106), 컴파일이 성공할 경우, 성공한 커널 이미지를 이용하여 부팅에 성공할 때까지 시스템 재부팅을 수행한다(107∼109). On the other hand, after applying a kernel patch to remove kernel vulnerabilities in the kernel source, the
그러나 커널 컴파일은 한번에 성공하기 힘들고, 컴파일 시에 오류가 발생하면 오류를 제거하기 위하여 커널 설정을 다시 수행하고, 상기의 컴파일 과정과 재부팅 과정을 다시 수행해야 하므로 커널 재컴파일 작업은 상당히 번거로운 문제점이 있었다. 즉, 종래에는 취약점이 발생한 커널 코드를 수정 패치하기 위하여 시스템에 운영중인 커널 버전에 해당되는 커널 소스를 준비하고, 커널을 재컴파일하고 시스템을 재부팅해야하는 과정을 거쳐야 하므로 중요한 업무를 처리하는 시스템의 경우에는 이러한 과정에 대한 부담감으로 패치하기 곤란한 경우가 많았다. However, kernel compilation cannot be successful at a time, and if an error occurs during compilation, the kernel recompilation process is quite cumbersome because the kernel configuration must be redone to remove the error, and the above compiling and rebooting process must be performed again. . In other words, in the case of a system that handles important tasks, the kernel source corresponding to the kernel version running on the system must be prepared, and the kernel must be recompiled and the system rebooted to fix and patch the vulnerable kernel code. In many cases, it was difficult to patch due to the burden on this process.
본 발명은 상기와 같은 종래의 문제점들을 해결하기 위해, 커널 자체 취약점을 보완할 수 있는 루틴을 엘케이엠(LKM: Loadable Kernel Module) 형태의 커널 모듈로 제작하여 커널 수정이나 시스템 재컴파일 및 재부팅 과정없이 효과적으로 커널 취약점을 이용한 해킹에 대응할 수 있는 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템을 제공하는데 그 목적이 있다. In order to solve the above problems, the present invention provides a routine capable of compensating the kernel itself in a kernel module in the form of a loadable kernel module (LKM) without modifying the kernel or recompiling the system and rebooting. Its purpose is to provide a kernel patch method and system for defending kernel vulnerabilities that can effectively counter hacking using kernel vulnerabilities.
또한, 본 발명의 다른 목적은 새롭게 발표된 커널 취약점 보완 모듈을 용이하게 추가할 수 있는 커널 패치 방법 및 시스템을 제공하는 것이다. Another object of the present invention is to provide a kernel patch method and system that can easily add a newly released kernel vulnerability supplement module.
상기와 같은 목적을 달성하기 위하여 본 발명의 방법은, 공개된 패치를 분석하여 커널 취약점을 보완할 수 있는 커널 취약점 패치 모듈을 제작하고, 상기 제작된 패치 모듈과 패치 모듈 정보를 커널 패치 DB에 저장하는 커널 취약점 패치 제작 단계; 현재 시스템의 커널 버전 정보, 기존 커널 패치 모듈의 존재 유무 정보, 기존 커널 패치 모듈의 버전 정보 등을 수집하는 시스템 정보 수집 단계; 상기 수집된 커널 정보에 기반하여 상기 커널 패치 DB를 검색하고, 현 시스템에 적용되어야 할 패치 모듈이 있는지 검사하는 커널 패치 DB 검색 단계; 및 상기 커널 패치 DB로부터 획득한 커널 취약점 패치 모듈을 적재하는 커널 취약점 패치 모듈 적재 단계를 구비한 것을 특징으로 한다. In order to achieve the above object, the method of the present invention analyzes an open patch, creates a kernel vulnerability patch module that can compensate for a kernel vulnerability, and stores the produced patch module and patch module information in a kernel patch DB. Kernel vulnerability patch production step; A system information collecting step of collecting kernel version information of the current system, presence or absence information of an existing kernel patch module, version information of an existing kernel patch module, and the like; A kernel patch DB search step of searching for the kernel patch DB based on the collected kernel information and checking whether there is a patch module to be applied to the current system; And a kernel vulnerability patch module loading step of loading a kernel vulnerability patch module obtained from the kernel patch DB.
상기와 같은 목적을 달성하기 위하여 본 발명의 패치관리 방법은 업데이트된 커널 패치 모듈을 다운받기 위하여 현재 시스템의 커널 정보와 현재 동작 중인 커널 패치 모듈의 버전 정보 등의 시스템 정보를 수집하는 단계; 커널 패치 모듈 DB를 검색하여 현 시스템의 정보에 해당되는 최신 커널 패치 모듈이 존재하는지 확인하고, 존재할 경우 이를 다운로드받는 단계; 상기 다운로드받은 커널 패치 모듈과 현재 커널 패치 모듈을 비교하는 단계; 및 상기 다운로드받은 커널 패치 모듈이 업데이트된 커널 패치 모듈인 경우, 기존 커널 패치 모듈을 내리고, 새로운 커널 패치 모듈을 적재하는 단계를 포함한다. In order to achieve the above object, the patch management method of the present invention includes collecting system information such as kernel information of a current system and version information of a currently running kernel patch module to download an updated kernel patch module; Searching the kernel patch module DB to determine whether there is a latest kernel patch module corresponding to information of the current system, and downloading the kernel patch module if it exists; Comparing the downloaded kernel patch module with a current kernel patch module; And when the downloaded kernel patch module is an updated kernel patch module, lowering an existing kernel patch module and loading a new kernel patch module.
그리고 상기와 같은 목적을 달성하기 위하여 본 발명의 시스템은, 사용자의 응용 프로그램이 시스템 호출 인터페이스를 거쳐 운영 체제의 커널 서비스를 이용할 수 있도록 된 컴퓨터 운영체제에 있어서, 커널 취약점을 제거하는 적재 가능한 커널 모듈 형태인 LKM 방식을 이용한 커널 취약점 방어 모듈; 커널 버전별 취약점 방어 모듈 정보를 저장하고 있는 커널 패치 데이터베이스; 및 상기 커널 패치 데이터베이스를 검색하여 커널 시스템의 커널 버전에 맞는 패치를 검색하기 위한 시스템 정보 수집 모듈을 포함하는 것을 특징으로 한다. In order to achieve the above object, the system of the present invention is a loadable kernel module type that eliminates kernel vulnerabilities in a computer operating system in which a user's application program can use a kernel service of an operating system through a system call interface. Kernel vulnerability defense module using LKM method; A kernel patch database that stores kernel version-specific vulnerability defense module information; And a system information collection module for searching for the patch corresponding to the kernel version of the kernel system by searching the kernel patch database.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
먼저, 본 발명은 커널 자체의 취약점(vulnerability)을 익스플로잇하여 공격하기 위해서는 시스템 호출을 이용한다는 점에 착안하여 시스템 콜 처리 루틴에 해당 커널 취약점을 익스플로잇할 수 없도록 입력값의 유효성 검사 코드를 삽입하는 부분을 포함하여 LKM(Loadable Kernel Module) 형태로 구성함으로써 커널 수정방식의 커널 패치와 동일한 효과를 내면서 시스템을 재컴파일 및 재부팅하지 않도록 하는 것이다. 그리고 새로운 취약점이 발생할 경우, 커널 취약점 보완 모듈만을 추가 적재함으로써 커널 취약점을 이용한 공격에 즉시적으로 대응할 수 있다. First, the present invention focuses on using system calls to exploit and exploit vulnerability of the kernel itself, and inserts validation code of input values into the system call processing routine so that the kernel vulnerabilities cannot be exploited. By configuring it in the form of Loadable Kernel Module (LKM), the system does not recompile and reboot the system with the same effect as kernel patch of kernel modification method. And when a new vulnerability occurs, it can immediately respond to attacks using kernel vulnerabilities by loading only the kernel vulnerability supplement module.
도 2는 본 발명이 적용될 수 있는 일반적인 리눅스 운영체제의 구성도이다. 구체적으로, 본 발명이 적용될 수 있는 리눅스 운영체제를 구성하는 사용자 영역과 커널 영역 및 각 구성요소들 간의 관계를 도시한 블록도이다. 2 is a block diagram of a general Linux operating system to which the present invention can be applied. Specifically, it is a block diagram showing the relationship between the user area and kernel area and each component constituting the Linux operating system to which the present invention can be applied.
도 2를 참조하면, 리눅스 운영체제는 사용자 응용 프로그램(User program: 200), 시스템 호출 인터페이스(System call interface:210), 커널 서비스(220), 코어 커널(Core Kernel: 230) 및 물리적인 디바이스들(240)로 구성되어 있다. Referring to FIG. 2, the Linux operating system includes a
사용자 응용 프로그램(200)은 시스템 호출 인터페이스(210)를 통하여 프로세스, 메모리, 파일 시스템, 네트워크 서비스, 각종 장치 드라이버 등을 포함하는 커널 서비스(220)를 사용할 수 있다. The
커널(Kernel)(220)은 가상 파일 시스템(VFS), 메모리관리자, 프로세스관리자, 네트웍 서비스, 파일시스템 드라이버, IDE 디스크 드라이버, TCP/IP 드라이버, 이더넷 카드 드라이버, 기타 드라이버 등과 같이 시스템의 자원을 관리하는 핵심 모듈을 의미한다. 커널의 기능을 수행하기 위하여 커널의 일부 소스는 빌트인되어야 하고, 일부는 확장 개념인 모듈방식으로 선택적으로 구성될 수 있다. 최근 몇몇 장치 드라이버(Device Driver)를 포함하여 커널의 기능을 동적으로 적재 가능한 LKM(Loadable Kernel Module) 형태로 구성하는 경우가 많다. 이러한 확장 가능한 형태의 모듈 방식 외에 핵심적인 커널 서비스를 코아 커널(230)이라 한다.
시스템의 자원은 물리적 자원(240)과 논리적 자원으로 구분할 수 있으며, 물리적 자원(240)은 네트웍 인터페이스 카드(NIC, Network Interface Card), 하드 디스크, 메모리, CPU 등을 의미하여, 논리적 자원은 프로세스, 가상 메모리, 파일 등으로서 물리적 자원을 개념적으로 매핑시키는 커널 객체들을 의미한다. The resources of the system may be divided into
코아 커널(230)은 원칙적으로 프로그래밍 오류가 없는 안전한 코드들로 구성되어 있다고 가정하고 있었으나 최근 계속적인 커널 핵심 코드들에 대한 프로그래밍 오류가 발견되고, 이를 이용한 공격 코드들이 출현하고 있으므로 커널 핵심 코드들에 대한 보안 취약점으로 인하여 시스템 전체의 보안이 영향을 받게 된다. The
따라서 본 발명에서는 커널 핵심 코드들을 비롯한 커널 자체의 취약점에 대한 보완 방법을 제공하는 것이고, 특히, 본 발명에서는 종래와 같이 커널 패치를 다운로드 받아서 커널을 수정하고 재컴파일 하는 방식이 아닌 커널 모듈 형태의 패치를 적재함으로써 커널 취약점을 이용한 공격에 효과적으로 대응하는 것이다. Therefore, the present invention provides a complementary method for vulnerabilities of the kernel itself including kernel core codes. In particular, the present invention provides a kernel module type patch, not a method of modifying and recompiling the kernel by downloading a kernel patch as in the prior art. It effectively responds to attacks using kernel vulnerabilities by loading.
도 3은 본 발명에 따라 커널 취약점에 대한 대응 방법을 도시한 순서도이다. 3 is a flowchart illustrating a method for responding to a kernel vulnerability according to the present invention.
리눅스 운영체제는 도 2에서 살펴 본 바와 같이, 사용자 영역과 커널 영역이 존재하고, 사용자 프로그램(200)에서 시스템의 자원을 사용하기 위해서는 시스템 호출(210)을 통해야만 하는 구조로서, 구성요소들이 서로 밀접하게 연관되어 있다. As shown in FIG. 2, the Linux operating system has a user area and a kernel area, and in order to use system resources in the
도 3을 참조하면, 본 발명에 의한 커널 취약점 패치 절차는 관리자의 요청에 의해 수행된다. 시스템 정보 수집 단계(300)에서는 현재 시스템의 커널 버전 정보, 기존 커널 패치 모듈의 존재 유무 정보, 기존 커널 패치 모듈의 버전 정보 등을 수집한다. 커널 패치DB 검색 단계(310)에서는 수집된 커널 정보에 기반하여 커널 패치 DB(320)를 검색하고, 현 시스템에 적용되어야 할 패치 모듈이 있는지 검사한다. 커널 패치 DB(320)에는 시스템의 성능이나 기능 확장 패치는 포함하고 있지 않으며, 치명적인 보안상의 취약점에 대한 패치 모듈만을 저장하고 있다. 그리고 커널 취약점 패치 모듈 적재 단계(330)에서는 커널 패치 DB(320)로부터 획득한 커널 취약점 패치 모듈을 적재한다. Referring to FIG. 3, the kernel vulnerability patch procedure according to the present invention is performed at the request of an administrator. The system
여기서, 커널 취약점 패치 제작 단계(340)에서는 공개된 패치를 분석하여 커널 취약점을 보완할 수 있는 커널 취약점 패치 모듈을 제작하고, 구성된 모듈과 패치 모듈 정보를 패치 DB(320)에 저장한다. 커널 취약점을 보완하는 패치 모듈은 각 취약점에 따라 수동으로 작성해야 한다. 바람직하게는 패치 DB에 접근할 수 있는 시스템들이 새로운 취약점이 발견되어 패치 모듈이 업데이트될 경우, 이를 다운로드 받아 적재할 수도 있다. Here, the kernel vulnerability
도 4는 본 발명이 적용된 시스템의 구성 및 커널 취약점 패치모듈의 동작 방법을 도시한 것이다. 4 illustrates a configuration of a system to which the present invention is applied and an operating method of a kernel vulnerability patch module.
도 4를 참조하면, 본 발명이 적용된 시스템은 리눅스 커널(230)과 시스템 호출 인터페이스(210)외에, 시스템 호출 후킹 모듈(System Call Hooking Module:400), 커널 취약점 방어 모듈(Kernel Exploit Prevention Module:410), 설 정모듈(Configuration Module:420) 및 로그모듈(Log Module:430)을 더 구비하고 있다. Referring to FIG. 4, the system to which the present invention is applied includes, in addition to the
시스템 호출 후킹 모듈(400)은 전체 시스템 호출 루틴에 대한 목록을 가지고 있는 시스템 호출 테이블(sys_call_table)의 벡터 내용을 직접 수정하여 커널 취약점 방어 모듈(410) 내에서 구현된 함수 루틴을 수행한 후, 시스템 호출 루틴을 수행하도록 한다. 즉, 원래의 시스템 호출 루틴은 커널 취약점 방어 모듈(410) 내의 함수로 대치되며, 커널 취약점 방어 모듈(410) 내의 함수는 취약점 방어에 필요한 작업을 수행한 후, 원래의 시스템 호출 루틴을 수행한다. The system call hooking
커널 취약점 방어 모듈(410)은 커널 함수로 연결되는 진입점에서 사용자 입력의 유효성과 권한 등의 적절한 정보를 설정 모듈(420)에서 넘겨받아서 사용한다. 권한 상승 및 입력 매개변수 유효성 등에 대한 확인은 설정 정보와 시스템의 상태를 저장하는 자료구조간의 비교를 통하여 이루어진다. 커널 취약점에 대해 권한 상승이나 오버플로우가 발생되는 조건을 파일 형태의 프로파일(profile:440)로 저장하며 커널 취약점 방어 모듈(410)에 설정 정보를 제공한다. 커널 취약점 방어 모듈(410)이 운영되면서 사후 분석에 필요한 정보를 로그 모듈(430)에서 기록한다. 현재 시스템 설정 정보와 비교하여 설정 정보가 변경되었을 때 그 내용을 기록하며 또한, 커널 취약점에 대한 방어 액션이 수행되었을 때 그 내용을 로그 데이터 저장소(Log data:450)에 기록한다. 즉, 특정 사용자가 한 객체에 대해서 커널 취약점을 공격했을 경우, 이에 대한 정보를 기록한다. The kernel
도 5는 본 발명에 따라 새로운 커널 취약점이 발견되었을 때의 클라이언트의 커널 취약점 패치 과정을 도시한 순서도이다. 5 is a flowchart illustrating a process of patching a kernel vulnerability of a client when a new kernel vulnerability is found according to the present invention.
도 5를 참조하면, 업데이트된 커널 패치 모듈을 다운받기 위하여 현재 시스템의 커널 정보와 현재 동작 중인 커널 패치 모듈의 버전 정보 등의 시스템 정보를 수집한다(단계 500). Referring to FIG. 5, system information such as kernel information of a current system and version information of a currently running kernel patch module is collected to download an updated kernel patch module (step 500).
그리고 커널 패치 모듈 DB(320)를 검색하여 현 시스템의 정보에 해당되는 최신 커널 패치 모듈이 존재하는지 확인하고 존재할 경우, 이를 다운로드받는다(단계 510). The kernel
이어 다운로드받은 커널 패치 모듈과 현재 커널 패치 모듈을 비교하고(단계 520), 다운로드받은 커널 패치 모듈이 업데이트된 커널 패치 모듈인 경우, 기존 커널 패치 모듈을 내리고(단계 530), 새로운 커널 패치 모듈을 적재한다(단계 540) Next, compare the downloaded kernel patch module with the current kernel patch module (step 520), and if the downloaded kernel patch module is an updated kernel patch module, lower the existing kernel patch module (step 530) and load the new kernel patch module. (Step 540)
이와 같이 본 발명에 의하면, 리눅스 운영체제를 대상으로 하여 커널 자체의 취약점을 이용한 공격 프로그램에 대응하기 위해서, 커널 핵심 코드 상의 오류에 진입할 수 있는 시스템 호출을 후킹하여 취약 부분에 접근할 수 없도록 입력값 검사 등을 수행하는 커널 패치 모듈을 제작함으로써 커널 수정을 요하는 현 패치 시스템과는 다른 커널 모듈 방식을 제공할 수 있다. As described above, according to the present invention, in order to cope with an attack program using a vulnerability of the kernel itself targeting the Linux operating system, the input value is not accessible by hooking a system call that can enter an error in the kernel core code. By creating a kernel patch module that performs checks, you can provide a different kernel module approach than the current patch system that requires kernel modification.
이상에서 설명한 바와 같이, 본 발명은 커널 핵심 코드 자체의 보안 취약점에 대한 커널 패치를 시스템 호출 후킹 기법을 이용한 커널 모듈로 제작하여 적용함으로써 커널 소스를 수정하는 기존 패치 방법보다 더 효율적으로 커널 취약점을 이용한 익스플로잇 프로그램에 대응할 수 있다. 즉, 커널 취약점이 발생하였을 경우, 커널 수정 방식의 패치는 커널 소스를 준비하여 커널을 수정한 뒤, 컴파일 및 재부팅 과정을 수행해야 하며, 새로운 취약점이 발견될 경우에 이러한 과정을 다시 수행해야 하므로 매우 번거로운 작업이다. 그러나 본 발명에서는 기존 커널 취약점을 제거하기 위하여 제작된 커널 패치 모듈을 적재하기만 하면 된다. 또한 새롭게 발견되는 커널 취약점을 적용하기 용이한 커널 모듈 패치 관리 방법을 제공함으로써 커널 취약점 발견에 대하여 빠르게 대응할 수 있다. As described above, the present invention uses a kernel patch for a security vulnerability of the kernel core code itself as a kernel module using a system call hooking technique, thereby applying the kernel vulnerability more efficiently than the existing patch method for modifying the kernel source. Corresponds to exploit programs. In other words, if a kernel vulnerability occurs, a kernel-modified patch needs to prepare the kernel source, modify the kernel, compile and reboot, and if a new vulnerability is found, it must be performed again. It is a cumbersome task. However, in the present invention, it is only necessary to load the kernel patch module manufactured to remove the existing kernel vulnerability. In addition, by providing a kernel module patch management method that is easy to apply newly discovered kernel vulnerabilities, it can respond quickly to the discovery of kernel vulnerabilities.
본 발명은 리눅스 운영체제를 대상으로 하는 커널 취약점을 이용한 공격 프로그램에 적극적으로 대응함으로써 아직까지 활성화되지 않은 리눅스 커널 기반의 커널 익스플로잇에 대한 대응 기술을 조기에 확보한다는 측면에서 그 효과가 매우 크다. The present invention is very effective in proactively coping with attack programs using kernel vulnerabilities targeting the Linux operating system to secure a response technology for kernel exploits based on Linux kernels that have not been activated yet.
본 발명은 상기한 실시 예에 한정되지 않고, 이하 청구 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능할 것이다. The present invention is not limited to the above-described embodiments, and various changes can be made by those skilled in the art without departing from the gist of the present invention as claimed in the following claims.
Claims (12)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050062560A KR100706176B1 (en) | 2005-07-12 | 2005-07-12 | Method and system of processing kernel patch for prevention of kernel vulnerability |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050062560A KR100706176B1 (en) | 2005-07-12 | 2005-07-12 | Method and system of processing kernel patch for prevention of kernel vulnerability |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070008782A true KR20070008782A (en) | 2007-01-18 |
KR100706176B1 KR100706176B1 (en) | 2007-04-12 |
Family
ID=38010705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050062560A KR100706176B1 (en) | 2005-07-12 | 2005-07-12 | Method and system of processing kernel patch for prevention of kernel vulnerability |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100706176B1 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101052734B1 (en) * | 2009-02-03 | 2011-07-29 | 주식회사 안철수연구소 | Application patch device and method |
KR20130060832A (en) * | 2011-11-30 | 2013-06-10 | 한국전자통신연구원 | Apparatus and method for para-virtualizing automatically os kernel |
CN105183530A (en) * | 2015-11-03 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | Module loading method and system based on K-UNIX core |
CN107229867A (en) * | 2017-06-12 | 2017-10-03 | 北京奇虎科技有限公司 | Kernel bug excavation method, device, computing device and computer-readable storage medium |
KR20190068495A (en) * | 2019-02-28 | 2019-06-18 | 한국인터넷진흥원 | Binary fatching apparatus and method thereof for supplementing vulnerabilties casued from using vulnerable functions |
CN110825501A (en) * | 2018-08-07 | 2020-02-21 | 龙芯中科技术有限公司 | Processor core optimization method and device and storage medium |
CN112906008A (en) * | 2018-11-15 | 2021-06-04 | 百度在线网络技术(北京)有限公司 | Kernel vulnerability repairing method, device, server and system |
CN113553593A (en) * | 2021-07-21 | 2021-10-26 | 浙江大学 | Internet of things firmware kernel vulnerability mining method and system based on semantic analysis |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020033859A (en) * | 2000-10-30 | 2002-05-08 | 송영호 | Linux security kernel |
KR100456512B1 (en) * | 2002-05-06 | 2004-11-10 | 한국전자통신연구원 | System for detecting a kernel backdoor, method for detecting a kernel backdoor and method for recovering a kernel data using the same |
US7591015B2 (en) * | 2003-10-23 | 2009-09-15 | Microsoft Corporation | Secure kernel transactions |
TWI241102B (en) * | 2003-12-30 | 2005-10-01 | Icp Electronics Inc | System for actively updating encryption/decryption module in security gateway and method |
US7739720B2 (en) * | 2004-10-14 | 2010-06-15 | Microsoft Corporation | Method and system for merging security policies |
-
2005
- 2005-07-12 KR KR1020050062560A patent/KR100706176B1/en not_active IP Right Cessation
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101052734B1 (en) * | 2009-02-03 | 2011-07-29 | 주식회사 안철수연구소 | Application patch device and method |
KR20130060832A (en) * | 2011-11-30 | 2013-06-10 | 한국전자통신연구원 | Apparatus and method for para-virtualizing automatically os kernel |
CN105183530A (en) * | 2015-11-03 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | Module loading method and system based on K-UNIX core |
CN107229867A (en) * | 2017-06-12 | 2017-10-03 | 北京奇虎科技有限公司 | Kernel bug excavation method, device, computing device and computer-readable storage medium |
CN107229867B (en) * | 2017-06-12 | 2020-12-25 | 北京奇虎科技有限公司 | Kernel vulnerability mining method and device, computing equipment and computer storage medium |
CN110825501A (en) * | 2018-08-07 | 2020-02-21 | 龙芯中科技术有限公司 | Processor core optimization method and device and storage medium |
CN112906008A (en) * | 2018-11-15 | 2021-06-04 | 百度在线网络技术(北京)有限公司 | Kernel vulnerability repairing method, device, server and system |
KR20190068495A (en) * | 2019-02-28 | 2019-06-18 | 한국인터넷진흥원 | Binary fatching apparatus and method thereof for supplementing vulnerabilties casued from using vulnerable functions |
CN113553593A (en) * | 2021-07-21 | 2021-10-26 | 浙江大学 | Internet of things firmware kernel vulnerability mining method and system based on semantic analysis |
CN113553593B (en) * | 2021-07-21 | 2023-08-04 | 浙江大学 | Semantic analysis-based method and system for mining loopholes of firmware kernel of Internet of things |
Also Published As
Publication number | Publication date |
---|---|
KR100706176B1 (en) | 2007-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531759B2 (en) | Trusted updates | |
Chen et al. | Adaptive android kernel live patching | |
US9229881B2 (en) | Security in virtualized computer programs | |
US9686078B1 (en) | Firmware validation from an external channel | |
KR100706176B1 (en) | Method and system of processing kernel patch for prevention of kernel vulnerability | |
Rice | Container security: Fundamental technology concepts that protect containerized applications | |
EP1891520B1 (en) | Constraint injection system for immunizing software programs against vulnerabilities and attacks | |
US9602466B2 (en) | Method and apparatus for securing a computer | |
US8046831B2 (en) | Automating software security restrictions on system resources | |
US20100031308A1 (en) | Safe and secure program execution framework | |
Höbarth et al. | A framework for on-device privilege escalation exploit execution on Android | |
US10102377B2 (en) | Protection of secured boot secrets for operating system reboot | |
US20220391506A1 (en) | Automated Interpreted Application Control For Workloads | |
CN106411814B (en) | policy management method and system | |
Bashun et al. | Too young to be secure: Analysis of UEFI threats and vulnerabilities | |
Grizzard | Towards self-healing systems: re-establishing trust in compromised systems | |
US11301228B2 (en) | Managing removal and modification of installed programs on a computer device | |
Umar et al. | A Comparative Study of Modern Operating Systems in terms of Memory and Security: A Case Study of Windows, iOS, and Android | |
Nazar et al. | Rooting Android–Extending the ADB by an auto-connecting WiFi-accessible service | |
KR102370848B1 (en) | Computer device including divided security module and method for updating security module | |
Dimou | Automatic security hardening of Docker containers using Mandatory Access Control, specialized in defending isolation | |
EP2835757B1 (en) | System and method protecting computers from software vulnerabilities | |
WO2013036097A1 (en) | A system and method to establish trusted boot loader using self-substantiated boot loader | |
Griffiths et al. | Fireguard-A secure browser with reduced forensic footprint | |
KR20240031717A (en) | Ebpf-based hot patch engine device for protecting kernel vulnerabilities, system and method including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130329 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140326 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160328 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |