KR100706176B1 - 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 - Google Patents

커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 Download PDF

Info

Publication number
KR100706176B1
KR100706176B1 KR1020050062560A KR20050062560A KR100706176B1 KR 100706176 B1 KR100706176 B1 KR 100706176B1 KR 1020050062560 A KR1020050062560 A KR 1020050062560A KR 20050062560 A KR20050062560 A KR 20050062560A KR 100706176 B1 KR100706176 B1 KR 100706176B1
Authority
KR
South Korea
Prior art keywords
kernel
patch
module
vulnerability
vulnerabilities
Prior art date
Application number
KR1020050062560A
Other languages
English (en)
Other versions
KR20070008782A (ko
Inventor
장인숙
이진석
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020050062560A priority Critical patent/KR100706176B1/ko
Publication of KR20070008782A publication Critical patent/KR20070008782A/ko
Application granted granted Critical
Publication of KR100706176B1 publication Critical patent/KR100706176B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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

본 발명은 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템에 관한 것으로서, 커널 취약점을 제거하는 적재 가능한 커널 모듈 형태인 LKM 방식을 이용한 커널 취약점 방어 모듈과, 커널 버전별 취약점 방어 모듈 정보를 저장하고 있는 커널 패치 데이터베이스와, 커널 패치 데이터베이스를 검색하여 커널 시스템의 커널 버전에 맞는 패치를 검색하기 위한 시스템 정보 수집 모듈을 구성하여, 시스템 콜 처리 루틴에 해당 커널 취약점을 익스플로잇할 수 없도록 입력값의 유효성 검사 코드를 삽입하는 부분을 포함하여 LKM(Loadable Kernel Module) 형태로 구성함으로써 커널 수정방식의 커널 패치와 동일한 효과를 가질 수 있을 뿐만 아니라, 시스템을 재컴파일 및 재부팅할 필요가 없으며, 새로운 취약점이 발생할 경우 커널 취약점 보완 모듈만을 추가 적재함으로써 커널 취약점을 이용한 공격에 즉시적으로 대응할 수 있다.
커널 취약점, 리눅스 커널, 패치 관리, 커널 모듈, 커널 익스플로잇

Description

커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템{METHOD AND SYSTEM OF PROCESSING KERNEL PATCH FOR PREVENTION OF KERNEL VULNERABILITY}
도 1은 종래에 리눅스 커널 보안 취약점을 해소하기 위한 커널 패치 방법을 도시한 개략도이고,
도 2는 본 발명이 적용될 수 있는 일반적인 리눅스 운영체제의 구성도이고,
도 3은 본 발명에 따라 리눅스 커널의 취약점을 보완하기 위한 커널 패치 방법을 도시한 순서도이고,
도 4는 본 발명에 의한 커널 취약점 패치 모듈의 동작 절차를 도시한 개략도이며,
도 5는 본 발명에 따라 새로운 커널 취약점이 발견되었을 때 취약점을 보완하기 위한 패치 과정을 도시한 도면이다.
<도면의 주요부분에 대한 부호의 설명>
200 : 사용자 응용 프로그램 210 : 시스템 호출 인터페이스
230 : 리눅스 커널 320 : 커널 패치 DB
400 : 시스템 콜 후킹 모듈 410 : 커널 취약점 방어 모듈
420 : 설정모듈 430 : 로그모듈
440 : 프로파일 450 : 로그 데이터
발명은 컴퓨터 운영체제의 보안 패치 방법에 관한 것으로, 보다 상세하게는 커널 소스 코드 자체의 보안 취약점(security vulnerability)에 대하여 커널 패치 후 재컴파일하거나 재부팅할 필요 없이 시스템의 보안을 향상시킬 수 있는 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템에 관한 것이다.
일반적으로, 운영체제의 주요 기능은 컴퓨터 시스템의 자원을 관리하는 것이다. 자원들에는 프로세서, 저장장치(메모리, 하드 디스크 등), 입/출력 장치(프린터, 모니터 디스플레이 등), 및 통신 장치(모뎀, 네트워크 인터페이스 등)가 있다. 운영체제 커널은 운영 체제의 핵심 또는 코아 컴포넌트이다. 커널의 기능으로는 프로세스 관리, 프로세스간의 통신(IPC), 인터럽트 처리, 스토리지 할당/반환 지원, 입/출력 활동 지원, 시스템 보안 방법 등이 있다.
이러한 운영체제의 핵심 기능을 수행하는 커널의 취약점(vulnerability)을 이용한 공격 익스플로잇(Exploits) 프로그램은 텔넷(telnet), 에프티피(ftp) 등의 응용 프로그램이나 데몬 서비스의 취약점을 이용한 공격 익스플로잇 프로그램들과 달리 특정 서비스의 사용 유무에 상관없이 해킹될 수 있다는 특징이 있다.
종래의 운영체제에 대한 보안 기술을 시큐어 오에스(Secure OS) 기술 또는 트러스티드 오에스(Trusted OS) 기술로 불리우고, 주로 주체와 객체간의 보안 등급과 보안 범주에 기반하여 접근통제하는 방식으로 구현되며, 시스템 호출 후킹 기법과 엘케이엠(LKM:Loadable Kernel Module) 방식을 이용하여 주체(사용자나 프로세스)가 특정 객체(파일 등)를 접근하려고 할 때 이를 통제한다. 커널 모듈로 구현된 참조 모니터(Reference Monitor)에 의해 파일 등 모든 자원에 대한 접근 통제가 이루어지며, 이를 토대로 권한이 없는 사용자에 의한 불법적인 접근 또는 외부로부터 악의적인 목적으로 시도되는 해킹은 운영체제 커널에서 강제적으로 차단된다.
그러나 일부 커널 취약점의 경우에는 로컬 사용자가 자신이 작성한 프로그램을 실행할 권한만 있다면 커널 취약점을 이용한 루트 권한 획득 또는 시스템 작동 중지가 가능하다. 즉, 주체/객체간의 보안 정보에 기반한 접근통제 방식은 응용 프로그램 취약점이 아닌 커널 자체의 취약점을 제거하기 위한 근본적인 해결책이 될 수 없으므로 취약한 핵심 커널 소스 자체의 패치가 추가적으로 필요하다.
이와 관련하여 패치 서버와 클라이언트 구성을 통하여 안전하게 패치를 배포할 수 있는 방법을 제안한 바 있으며, 예를 들어 새롭게 추가되는 패치와 전체 클라이언트들의 패치에 대한 전역 패치 프로파일을 관리하는 패치 매니저를 구비하는 패치 분배 서버와, 패치 분배 서버에 각각 접속된 다수의 클라이언트로 이루어진 시스템에 대해, 각 클라이언트에는 기 설치된 패치에 대한 패치 프로파일을 관리하는 패치 에이전트가 설치하여 패치 관리를 수행한 바 있다.
그러나 커널 패치가 바이너리 형태로 구성될 경우, 바이너리 업데이트 (Update) 또는 치환으로 시스템의 패치가 가능한 경우에 적용 가능하나 리눅스 커널과 같이 텍스트 형태로 패치가 배포되는 경우에는 적용하기가 어렵다. 따라서 리눅스 커널을 대상으로 하여 취약한 커널 소스 자체의 패치를 위해서는 커널 버전에 따른 패치를 다운받아서 패치해야 한다.
리눅스 커널 패치는 오픈 소스 진영에서 제공하는 패치와 배포판 제작 업체에서 제공하는 패치로 나눌 수 있다. 이러한 패치는 커널 버전별로 관리되며 보안 취약점이 발견될 경우마다 발표되는 임시 패치들도 존재한다. 커널 패치는 텍스트 비교 도구를 이용하여 제작되고, 커널 버전에 따라 순서대로 적용해 주어야만 한다. 그리고 패치 적용 후, 커널을 재컴파일하고 시스템을 재부팅하는 과정을 수행해야만 한다.
도 1은 종래 방식에 따른 커널 취약점을 보완하기 위한 커널 패치 방법을 도시한 순서도이다.
도 1을 참조하면, 먼저 취약점을 패치할 시스템에 커널 소스가 존재하는지를 검사하고(101), 커널 소스가 시스템 내에 존재하지 않을 경우에는 먼저 커널 소스를 구하여 시스템에 설치해야 한다(102).
그리고 커널 버전에 해당되는 커널의 취약점을 보완하기 위한 커널 패치를 수집하고(103), 수집된 커널 패치를 적용한다(104).
여기서, 리눅스 커널 패치는 윈도우에서처럼 특정 업체가 패치를 제작하고 배포하는 단일화된 시스템이 아니며, 다양한 방식의 커널 패치가 제공되고 있다. 커널 패치는 매번 커널이 바뀔 때마다 커널 소스를 다시 받을 필요없이 바뀐 차이점만을 담고 있는 작은 용량의 텍스트 파일로서, 커널 패치에 포함된 내용은 커널의 기능 및 성능 향상과 커널의 보안상 취약점을 제거하기 위한 보안 패치를 포함하고 있다. 그러나 리눅스 커널 패치는 텍스트 비교 도구를 이용하여 제작되는 것이므로, 반드시 커널 버전에 따라 순서대로 적용해야만 한다. 통상, 리눅스 커널 패치를 제작하고 배포하는 주체는 오픈소스 진영과 각 배포판 제작 업체로 나눌 수 있다. 오픈소스 진영의 패치는 공식 패치와 사안 별로 제작하여 배포하는 임시 패치로 나눌 수 있다.
한편, 커널 소스에 커널 취약점을 제거하는 커널 패치를 적용한 후에는 커널을 컴파일할 준비 작업으로서, 시스템의 환경에 맞도록 커널 설정(105)을 해주어야 하고, 재컴파일해주어야 하며(106), 컴파일이 성공할 경우, 성공한 커널 이미지를 이용하여 부팅에 성공할 때까지 시스템 재부팅을 수행한다(107∼109).
그러나 커널 컴파일은 한번에 성공하기 힘들고, 컴파일 시에 오류가 발생하면 오류를 제거하기 위하여 커널 설정을 다시 수행하고, 상기의 컴파일 과정과 재부팅 과정을 다시 수행해야 하므로 커널 재컴파일 작업은 상당히 번거로운 문제점이 있었다. 즉, 종래에는 취약점이 발생한 커널 코드를 수정 패치하기 위하여 시스템에 운영중인 커널 버전에 해당되는 커널 소스를 준비하고, 커널을 재컴파일하고 시스템을 재부팅해야하는 과정을 거쳐야 하므로 중요한 업무를 처리하는 시스템의 경우에는 이러한 과정에 대한 부담감으로 패치하기 곤란한 경우가 많았다.
본 발명은 상기와 같은 종래의 문제점들을 해결하기 위해, 커널 자체 취약점을 보완할 수 있는 루틴을 엘케이엠(LKM: Loadable Kernel Module) 형태의 커널 모듈로 제작하여 커널 수정이나 시스템 재컴파일 및 재부팅 과정없이 효과적으로 커널 취약점을 이용한 해킹에 대응할 수 있는 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템을 제공하는데 그 목적이 있다.
또한, 본 발명의 다른 목적은 새롭게 발표된 커널 취약점 보완 모듈을 용이하게 추가할 수 있는 커널 패치 방법 및 시스템을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 방법은, 공개된 패치를 분석하여 커널 취약점을 보완할 수 있는 커널 취약점 패치 모듈을 제작하고, 상기 제작된 패치 모듈과 패치 모듈 정보를 커널 패치 DB에 저장하는 커널 취약점 패치 제작 단계; 현재 시스템의 커널 버전 정보, 기존 커널 패치 모듈의 존재 유무 정보, 기존 커널 패치 모듈의 버전 정보 등을 수집하는 시스템 정보 수집 단계; 상기 수집된 커널 정보에 기반하여 상기 커널 패치 DB를 검색하고, 현 시스템에 적용되어야 할 패치 모듈이 있는지 검사하는 커널 패치 DB 검색 단계; 및 상기 커널 패치 DB로부터 획득한 커널 취약점 패치 모듈을 적재하는 커널 취약점 패치 모듈 적재 단계를 구비한 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위하여 본 발명의 패치관리 방법은 업데이트된 커널 패치 모듈을 다운받기 위하여 현재 시스템의 커널 정보와 현재 동작 중인 커널 패치 모듈의 버전 정보 등의 시스템 정보를 수집하는 단계; 커널 패치 모듈 DB를 검색하여 현 시스템의 정보에 해당되는 최신 커널 패치 모듈이 존재하는지 확인하고, 존재할 경우 이를 다운로드받는 단계; 상기 다운로드받은 커널 패치 모듈과 현재 커널 패치 모듈을 비교하는 단계; 및 상기 다운로드받은 커널 패치 모듈이 업데이트된 커널 패치 모듈인 경우, 기존 커널 패치 모듈을 내리고, 새로운 커널 패치 모듈을 적재하는 단계를 포함한다.
그리고 상기와 같은 목적을 달성하기 위하여 본 발명의 시스템은, 사용자의 응용 프로그램이 시스템 호출 인터페이스를 거쳐 운영 체제의 커널 서비스를 이용할 수 있도록 된 컴퓨터 운영체제에 있어서, 커널 취약점을 제거하는 적재 가능한 커널 모듈 형태인 LKM 방식을 이용한 커널 취약점 방어 모듈; 커널 버전별 취약점 방어 모듈 정보를 저장하고 있는 커널 패치 데이터베이스; 및 상기 커널 패치 데이터베이스를 검색하여 커널 시스템의 커널 버전에 맞는 패치를 검색하기 위한 시스템 정보 수집 모듈을 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다.
먼저, 본 발명은 커널 자체의 취약점(vulnerability)을 익스플로잇하여 공격하기 위해서는 시스템 호출을 이용한다는 점에 착안하여 시스템 콜 처리 루틴에 해당 커널 취약점을 익스플로잇할 수 없도록 입력값의 유효성 검사 코드를 삽입하는 부분을 포함하여 LKM(Loadable Kernel Module) 형태로 구성함으로써 커널 수정방식의 커널 패치와 동일한 효과를 내면서 시스템을 재컴파일 및 재부팅하지 않도록 하는 것이다. 그리고 새로운 취약점이 발생할 경우, 커널 취약점 보완 모듈만을 추가 적재함으로써 커널 취약점을 이용한 공격에 즉시적으로 대응할 수 있다.
도 2는 본 발명이 적용될 수 있는 일반적인 리눅스 운영체제의 구성도이다. 구체적으로, 본 발명이 적용될 수 있는 리눅스 운영체제를 구성하는 사용자 영역과 커널 영역 및 각 구성요소들 간의 관계를 도시한 블록도이다.
도 2를 참조하면, 리눅스 운영체제는 사용자 응용 프로그램(User program: 200), 시스템 호출 인터페이스(System call interface:210), 커널 서비스(220), 코어 커널(Core Kernel: 230) 및 물리적인 디바이스들(240)로 구성되어 있다.
사용자 응용 프로그램(200)은 시스템 호출 인터페이스(210)를 통하여 프로세스, 메모리, 파일 시스템, 네트워크 서비스, 각종 장치 드라이버 등을 포함하는 커널 서비스(220)를 사용할 수 있다.
커널(Kernel)(220)은 가상 파일 시스템(VFS), 메모리관리자, 프로세스관리자, 네트웍 서비스, 파일시스템 드라이버, IDE 디스크 드라이버, TCP/IP 드라이버, 이더넷 카드 드라이버, 기타 드라이버 등과 같이 시스템의 자원을 관리하는 핵심 모듈을 의미한다. 커널의 기능을 수행하기 위하여 커널의 일부 소스는 빌트인되어야 하고, 일부는 확장 개념인 모듈방식으로 선택적으로 구성될 수 있다. 최근 몇몇 장치 드라이버(Device Driver)를 포함하여 커널의 기능을 동적으로 적재 가능한 LKM(Loadable Kernel Module) 형태로 구성하는 경우가 많다. 이러한 확장 가능한 형태의 모듈 방식 외에 핵심적인 커널 서비스를 코아 커널(230)이라 한다.
시스템의 자원은 물리적 자원(240)과 논리적 자원으로 구분할 수 있으며, 물리적 자원(240)은 네트웍 인터페이스 카드(NIC, Network Interface Card), 하드 디스크, 메모리, CPU 등을 의미하여, 논리적 자원은 프로세스, 가상 메모리, 파일 등으로서 물리적 자원을 개념적으로 매핑시키는 커널 객체들을 의미한다.
코아 커널(230)은 원칙적으로 프로그래밍 오류가 없는 안전한 코드들로 구성되어 있다고 가정하고 있었으나 최근 계속적인 커널 핵심 코드들에 대한 프로그래밍 오류가 발견되고, 이를 이용한 공격 코드들이 출현하고 있으므로 커널 핵심 코드들에 대한 보안 취약점으로 인하여 시스템 전체의 보안이 영향을 받게 된다.
따라서 본 발명에서는 커널 핵심 코드들을 비롯한 커널 자체의 취약점에 대한 보완 방법을 제공하는 것이고, 특히, 본 발명에서는 종래와 같이 커널 패치를 다운로드 받아서 커널을 수정하고 재컴파일 하는 방식이 아닌 커널 모듈 형태의 패치를 적재함으로써 커널 취약점을 이용한 공격에 효과적으로 대응하는 것이다.
도 3은 본 발명에 따라 커널 취약점에 대한 대응 방법을 도시한 순서도이다.
리눅스 운영체제는 도 2에서 살펴 본 바와 같이, 사용자 영역과 커널 영역이 존재하고, 사용자 프로그램(200)에서 시스템의 자원을 사용하기 위해서는 시스템 호출(210)을 통해야만 하는 구조로서, 구성요소들이 서로 밀접하게 연관되어 있다.
도 3을 참조하면, 본 발명에 의한 커널 취약점 패치 절차는 관리자의 요청에 의해 수행된다. 시스템 정보 수집 단계(300)에서는 현재 시스템의 커널 버전 정보, 기존 커널 패치 모듈의 존재 유무 정보, 기존 커널 패치 모듈의 버전 정보 등을 수집한다. 커널 패치DB 검색 단계(310)에서는 수집된 커널 정보에 기반하여 커널 패치 DB(320)를 검색하고, 현 시스템에 적용되어야 할 패치 모듈이 있는지 검사한다. 커널 패치 DB(320)에는 시스템의 성능이나 기능 확장 패치는 포함하고 있지 않으며, 치명적인 보안상의 취약점에 대한 패치 모듈만을 저장하고 있다. 그리고 커널 취약점 패치 모듈 적재 단계(330)에서는 커널 패치 DB(320)로부터 획득한 커널 취약점 패치 모듈을 적재한다.
여기서, 커널 취약점 패치 제작 단계(340)에서는 공개된 패치를 분석하여 커널 취약점을 보완할 수 있는 커널 취약점 패치 모듈을 제작하고, 구성된 모듈과 패치 모듈 정보를 패치 DB(320)에 저장한다. 바람직하게는 패치 DB에 접근할 수 있는 시스템들이 새로운 취약점이 발견되어 패치 모듈이 업데이트될 경우, 이를 다운로드 받아 적재할 수도 있다.
도 4는 본 발명이 적용된 시스템의 구성 및 커널 취약점 패치모듈의 동작 방법을 도시한 것이다.
도 4를 참조하면, 본 발명이 적용된 시스템은 리눅스 커널(230)과 시스템 호출 인터페이스(210)외에, 시스템 호출 후킹 모듈(System Call Hooking Module:400), 커널 취약점 방어 모듈(Kernel Exploit Prevention Module:410), 설 정모듈(Configuration Module:420) 및 로그모듈(Log Module:430)을 더 구비하고 있다.
시스템 호출 후킹 모듈(400)은 전체 시스템 호출 루틴에 대한 목록을 가지고 있는 시스템 호출 테이블(sys_call_table)의 벡터 내용을 직접 수정하여 커널 취약점 방어 모듈(410) 내에서 구현된 함수 루틴을 수행한 후, 시스템 호출 루틴을 수행하도록 한다. 즉, 원래의 시스템 호출 루틴은 커널 취약점 방어 모듈(410) 내의 함수로 대치되며, 커널 취약점 방어 모듈(410) 내의 함수는 취약점 방어에 필요한 작업을 수행한 후, 원래의 시스템 호출 루틴을 수행한다.
커널 취약점 방어 모듈(410)은 커널 함수로 연결되는 진입점에서 사용자 입력의 유효성과 권한 등의 적절한 정보를 설정 모듈(420)에서 넘겨받아서 사용한다. 권한 상승 및 입력 매개변수 유효성 등에 대한 확인은 설정 정보와 시스템의 상태를 저장하는 자료구조간의 비교를 통하여 이루어진다. 커널 취약점에 대해 권한 상승이나 오버플로우가 발생되는 조건을 파일 형태의 프로파일(profile:440)로 저장하며 커널 취약점 방어 모듈(410)에 설정 정보를 제공한다. 커널 취약점 방어 모듈(410)이 운영되면서 사후 분석에 필요한 정보를 로그 모듈(430)에서 기록한다. 현재 시스템 설정 정보와 비교하여 설정 정보가 변경되었을 때 그 내용을 기록하며 또한, 커널 취약점에 대한 방어 액션이 수행되었을 때 그 내용을 로그 데이터 저장소(Log data:450)에 기록한다. 즉, 특정 사용자가 한 객체에 대해서 커널 취약점을 공격했을 경우, 이에 대한 정보를 기록한다.
도 5는 본 발명에 따라 새로운 커널 취약점이 발견되었을 때의 클라이언트의 커널 취약점 패치 과정을 도시한 순서도이다.
도 5를 참조하면, 업데이트된 커널 패치 모듈을 다운받기 위하여 현재 시스템의 커널 정보와 현재 동작 중인 커널 패치 모듈의 버전 정보 등의 시스템 정보를 수집한다(단계 500).
그리고 커널 패치 모듈 DB(320)를 검색하여 현 시스템의 정보에 해당되는 최신 커널 패치 모듈이 존재하는지 확인하고 존재할 경우, 이를 다운로드받는다(단계 510).
이어 다운로드받은 커널 패치 모듈과 현재 커널 패치 모듈을 비교하고(단계 520), 다운로드받은 커널 패치 모듈이 업데이트된 커널 패치 모듈인 경우, 기존 커널 패치 모듈을 내리고(단계 530), 새로운 커널 패치 모듈을 적재한다(단계 540)
이와 같이 본 발명에 의하면, 리눅스 운영체제를 대상으로 하여 커널 자체의 취약점을 이용한 공격 프로그램에 대응하기 위해서, 커널 핵심 코드 상의 오류에 진입할 수 있는 시스템 호출을 후킹하여 취약 부분에 접근할 수 없도록 입력값 검사 등을 수행하는 커널 패치 모듈을 제작함으로써 커널 수정을 요하는 현 패치 시스템과는 다른 커널 모듈 방식을 제공할 수 있다.
이상에서 설명한 바와 같이, 본 발명은 커널 핵심 코드 자체의 보안 취약점에 대한 커널 패치를 시스템 호출 후킹 기법을 이용한 커널 모듈로 제작하여 적용함으로써 커널 소스를 수정하는 기존 패치 방법보다 더 효율적으로 커널 취약점을 이용한 익스플로잇 프로그램에 대응할 수 있다. 즉, 커널 취약점이 발생하였을 경우, 커널 수정 방식의 패치는 커널 소스를 준비하여 커널을 수정한 뒤, 컴파일 및 재부팅 과정을 수행해야 하며, 새로운 취약점이 발견될 경우에 이러한 과정을 다시 수행해야 하므로 매우 번거로운 작업이다. 그러나 본 발명에서는 기존 커널 취약점을 제거하기 위하여 제작된 커널 패치 모듈을 적재하기만 하면 된다. 또한 새롭게 발견되는 커널 취약점을 적용하기 용이한 커널 모듈 패치 관리 방법을 제공함으로써 커널 취약점 발견에 대하여 빠르게 대응할 수 있다.
본 발명은 리눅스 운영체제를 대상으로 하는 커널 취약점을 이용한 공격 프로그램에 적극적으로 대응함으로써 아직까지 활성화되지 않은 리눅스 커널 기반의 커널 익스플로잇에 대한 대응 기술을 조기에 확보한다는 측면에서 그 효과가 매우 크다.
본 발명은 상기한 실시 예에 한정되지 않고, 이하 청구 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능할 것이다.

Claims (12)

  1. 삭제
  2. 컴퓨터 운영체제의 커널 버전 정보, 기존 커널 패치 모듈의 존재 유무 정보, 기존 커널 패치 모듈의 버전 정보 등을 수집하는 시스템 정보를 수집하는 제 1 단계;
    상기 수집된 커널 정보에 기반하여 상기 커널 패치 DB를 검색하고, 현 시스템에 적용되어야 할 패치 모듈이 있는지 검사하는 커널 패치 DB를 검색하는 제 2 단계; 및
    상기 커널 패치 DB로부터 획득한 커널 취약점 패치 모듈을 적재하는 커널 취약점 패치 모듈을 적재하는 제 3 단계
    를 포함하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  3. 제 2 항에 있어서, 상기 방법은,
    공개된 패치를 분석하여 커널 취약점을 보완할 수 있는 커널 취약점 패치 모듈을 제작하고, 상기 제작된 패치 모듈과 패치 모듈 정보를 커널 패치 DB에 저장하는 커널 취약점 패치를 제작하는 단계를 더 포함하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  4. 제 3 항에 있어서, 상기 커널 취약점 패치 제작 단계에서 제작된 커널 패치 모듈은 시스템 호출 후킹 기법을 이용하여 유효성 검사 코드를 갖는 적재 가능한 커널 모듈(LKM)인 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  5. 제 2 항에 있어서, 상기 제 2 단계는,
    커널 패치 모듈 DB를 검색하여 현 시스템의 정보에 해당되는 최신 커널 패치 모듈이 존재하는지 확인하고, 존재할 경우 이를 다운로드받는 단계; 및
    상기 다운로드받은 커널 패치 모듈과 현재 커널 패치 모듈을 비교하는 단계
    를 포함하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  6. 제 2 항에 있어서, 상기 커널 패치 DB에는 보안상의 취약점에 대한 패치 모듈을 저장하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  7. 제 2 항에 있어서, 상기 컴퓨터 운용체제는 리눅스 운영체제인 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  8. 제 2 항에 있어서, 상기 커널 패치는 텍스트형 파일인 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 방법.
  9. 커널 취약점을 제거하는 적재 가능한 커널 모듈 형태인 LKM 방식을 이용한 커널 취약점 방어 모듈;
    커널 버전별 취약점 방어 모듈 정보를 저장하고 있는 커널 패치 데이터베이스; 및
    상기 커널 패치 데이터베이스를 검색하여 커널 시스템의 커널 버전에 맞는 패치를 검색하기 위한 시스템 정보 수집 모듈
    을 포함하여,
    사용자 응용 프로그램이 시스템 호출 인터페이스를 거쳐 운영 체제의 커널 서비스를 이용할 수 있도록 된 컴퓨터 운영체제에서, 시스템 호출 후킹 기법을 이 용하여 유효성 검사 코드를 갖는 적재 가능한 커널 모듈(LKM:Loadable Kernel Module) 형태로 구성하여 커널 패치를 수행하는 것을 포함하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 시스템.
  10. 제 9 항에 있어서, 상기 컴퓨터 운영체제는
    전체 시스템 호출 루틴에 대한 목록을 가지고 있는 시스템 콜 테이블(sys_call_table)의 벡터 내용을 직접 수정하여 상기 커널 취약점 방어 모듈 내에서 구현된 함수 루틴을 수행한 후, 시스템 호출 루틴을 수행하도록 하는 시스템 호출 후킹 모듈을 구비한 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 시스템.
  11. 제 10 항에 있어서, 상기 커널 취약점 방어 모듈은
    치환되는 각 시스템콜 처리 루틴 부분에서 시스템 호출 시의 사용자 입력 파라미터의 범위 및 유효성을 검사하는 부분을 포함하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 시스템.
  12. 제 10 항에 있어, 상기 커널 취약점 방어모듈은
    프로파일 형태로 제공된 설정 파일에 의거하여 입력갑 유효성 검사 루틴 및 시스템 상태 정보 검사 등의 커널 익스플로잇 방어를 수행하는 것을 특징으로 하는 커널 취약요소를 방어하기 위한 커널 패치 시스템.
KR1020050062560A 2005-07-12 2005-07-12 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 KR100706176B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050062560A KR100706176B1 (ko) 2005-07-12 2005-07-12 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050062560A KR100706176B1 (ko) 2005-07-12 2005-07-12 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20070008782A KR20070008782A (ko) 2007-01-18
KR100706176B1 true KR100706176B1 (ko) 2007-04-12

Family

ID=38010705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050062560A KR100706176B1 (ko) 2005-07-12 2005-07-12 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR100706176B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101052734B1 (ko) * 2009-02-03 2011-07-29 주식회사 안철수연구소 응용 프로그램 패치 장치 및 방법
KR101665976B1 (ko) * 2011-11-30 2016-10-14 한국전자통신연구원 운영 체제 커널의 자동 반가상화 장치 및 방법
CN105183530A (zh) * 2015-11-03 2015-12-23 浪潮(北京)电子信息产业有限公司 基于k-unix内核的模块加载方法及系统
CN107229867B (zh) * 2017-06-12 2020-12-25 北京奇虎科技有限公司 内核漏洞挖掘方法、装置、计算设备及计算机存储介质
CN110825501A (zh) * 2018-08-07 2020-02-21 龙芯中科技术有限公司 处理器内核优化方法、装置和存储介质
CN112906008B (zh) * 2018-11-15 2023-07-25 百度在线网络技术(北京)有限公司 内核漏洞修复方法、装置、服务器及系统
KR102070010B1 (ko) * 2019-02-28 2020-01-29 한국인터넷진흥원 취약 함수 사용에 의한 취약점을 보완하기 위한 바이너리 패치 장치 및 그 방법
CN113553593B (zh) * 2021-07-21 2023-08-04 浙江大学 基于语义分析的物联网固件内核漏洞挖掘方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020033859A (ko) * 2000-10-30 2002-05-08 송영호 리눅스 보안 커널
KR20030086722A (ko) * 2002-05-06 2003-11-12 한국전자통신연구원 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법
US20050091502A1 (en) * 2003-10-23 2005-04-28 Jon Cargille Secure kernel transactions
US20050149746A1 (en) * 2003-12-30 2005-07-07 Chih-Chung Lu System for actively updating a cryptography module in a security gateway and related method
KR20060050641A (ko) * 2004-10-14 2006-05-19 마이크로소프트 코포레이션 보안 대책들을 병합하기 위한 방법 및 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020033859A (ko) * 2000-10-30 2002-05-08 송영호 리눅스 보안 커널
KR20030086722A (ko) * 2002-05-06 2003-11-12 한국전자통신연구원 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법
US20050091502A1 (en) * 2003-10-23 2005-04-28 Jon Cargille Secure kernel transactions
US20050149746A1 (en) * 2003-12-30 2005-07-07 Chih-Chung Lu System for actively updating a cryptography module in a security gateway and related method
KR20060050641A (ko) * 2004-10-14 2006-05-19 마이크로소프트 코포레이션 보안 대책들을 병합하기 위한 방법 및 시스템

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"보안리눅스 연구개발 동향", 정보과학회지 제13권제4*
"보안리눅스 연구개발 동향", 정보과학회지 제13권제4호, 2003.8 *

Also Published As

Publication number Publication date
KR20070008782A (ko) 2007-01-18

Similar Documents

Publication Publication Date Title
US11531759B2 (en) Trusted updates
Chen et al. Adaptive android kernel live patching
KR100706176B1 (ko) 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템
Rice Container security: Fundamental technology concepts that protect containerized applications
US8832691B2 (en) Compliance-based adaptations in managed virtual systems
US8046831B2 (en) Automating software security restrictions on system resources
US9602466B2 (en) Method and apparatus for securing a computer
US20150227386A1 (en) Enforcement of compliance policies in managed virtual systems
US20100031308A1 (en) Safe and secure program execution framework
EP1891520A2 (en) Constraint injection system for immunizing software programs against vulnerabilities and attacks
Höbarth et al. A framework for on-device privilege escalation exploit execution on Android
Christensen et al. {DECAF}: Automatic, adaptive de-bloating and hardening of {COTS} firmware
US20220391506A1 (en) Automated Interpreted Application Control For Workloads
Compastié et al. Unikernel-based approach for software-defined security in cloud infrastructures
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
Laurén et al. Analysis of security in modern container platforms
Cheruvu et al. IoT software security building blocks
KR102370848B1 (ko) 분할된 보안 모듈을 구비하는 컴퓨터 장치 및 보안 모듈 업데이트 방법
Chevalier Detecting and Surviving Intrusions: Exploring New Host-Based Intrusion Detection, Recovery, and Response Approaches
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

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