KR101048874B1 - 취약 커널 변수 추천 장치 및 방법 - Google Patents

취약 커널 변수 추천 장치 및 방법 Download PDF

Info

Publication number
KR101048874B1
KR101048874B1 KR1020090051169A KR20090051169A KR101048874B1 KR 101048874 B1 KR101048874 B1 KR 101048874B1 KR 1020090051169 A KR1020090051169 A KR 1020090051169A KR 20090051169 A KR20090051169 A KR 20090051169A KR 101048874 B1 KR101048874 B1 KR 101048874B1
Authority
KR
South Korea
Prior art keywords
kernel
vulnerable
variable
kernel variable
variables
Prior art date
Application number
KR1020090051169A
Other languages
English (en)
Other versions
KR20100132377A (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 KR1020090051169A priority Critical patent/KR101048874B1/ko
Publication of KR20100132377A publication Critical patent/KR20100132377A/ko
Application granted granted Critical
Publication of KR101048874B1 publication Critical patent/KR101048874B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Abstract

취약 커널 변수 추천 장치는 리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 커널 변수를 추출하는 커널 변수 추출부, 상기 추출된 커널 변수 중 권한 상승과 관련된 커널 변수를 선택하는 커널 변수 선택부, 상기 선택된 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천하는 취약 커널 변수 추천부 및 기 발견된 취약 커널 변수에 대한 정보를 참조하여 상기 추천된 취약 커널 변수의 순위를 결정하는 순위 결정부를 포함한다.
리눅스, 커널 변수, 취약점

Description

취약 커널 변수 추천 장치 및 방법{APPARATUS AND METHOD FOR RECOMMANDING VULNERABLE KERNEL VARIABLE}
본 발명은 취약 커널 변수 추천 장치 및 방법에 관한 것이다.
최근 리눅스(Linux) 운영체제는 임베디드 시스템에서부터 하이엔드 서버에 이르기까지 다방면에서 사용되고 있다. 이처럼 리눅스 운영체제가 다방면에서 사용되는 이유는 운영체제의 소스가 공개되어 새로운 기술을 빠르게 적용할 수 있기 때문이다. 하지만 소스의 공개에 따라 악의적인 사용자에 의해 리눅스 커널 소스의 취약점이 악용될 가능성이 있다. 최근엔 리눅스 커널에 다양한 기능이 추가됨에 따라 새로 추가된 코드로부터 보고되는 취약점의 수도 증가하고 있다. 이에 따른 위험 요소를 줄이기 위해서는 리눅스 커널 소스의 취약점을 조기에 발견하고 보완하는 연구가 필요하다.
리눅스 커널 소스의 취약점 중 가장 빈번하게 보고되며, 중요하게 다루어져야 할 것이 커널 변수와 관련된 취약점이다. 일반적으로 변수는 정수 오류, 한계 오류, 권한 오류, 초기화 오류, 반환 값 오류, 입력 값 오류, 값 비교 오류 등을 발생시킬 수 있는데, 공격자는 이러한 오류를 이용하여 불법적으로 권한상승을 쉽게 얻어낼 가능성이 있다. 이러한 취약점을 이용하여 불법적인 권한상승 공격을 성공하면 로컬 시스템을 장악하여 주요 정보를 빼가거나 훼손 할 수 있을 뿐 아니라 분산 서비스 공격과 같은 네트워크 공격도 시도할 수 있다.
리눅스 커널 소스의 취약 커널 변수는 악용될 위험이 많은 반면 새로운 취약 커널 변수를 발견하는 것은 쉽지 않다. 그 가장 큰 이유는 리눅스 커널 소스의 크기가 방대하여, 수작업으로 각각의 변수가 어떻게 사용되었는지를 일일이 검사하고 실제적으로 문제점이 존재하는지를 파악하는 것은 거의 불가능한 일이기 때문이다.
일부 연구 사례에서는 운영체제의 커널 소스가 아닌 범용 프로그램 소스의 오류 탐지 기술을 통해 운영체제의 취약점을 분석하는 시도가 있었다. 이러한 기술은 크게 구문 패턴 매칭 기법과 구문 의미 분석 기술로 나뉜다. 구문 패턴 매칭 기술은 알려진 취약점의 구문적 패턴을 사용하여 새로운 취약점을 발견하는 데는 높은 성능을 보이지만 패턴을 벗어난 취약점을 발견하는 것에는 한계가 있으며, 구문 의미 분석 기술은 구현 하는 것이 어렵고 다양한 도메인에 사용하기가 어려워서 리눅스와 같은 운영체제의 커널 소스에 존재하는 취약 커널 변수를 발견하기에는 부적합하다.
본 발명의 일부 실시예는 운영체제의 커널 소스에 존재하는 커널 변수 중 외부 공격에 취약한 커널 변수를 추천할 수 있는 취약 커널 변수 추천 장치 및 방법을 제공한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 취약 커널 변수 추천 장치는 리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 커널 변수를 추출하는 커널 변수 추출부, 상기 추출된 커널 변수 중 권한 상승과 관련된 커널 변수를 선택하는 커널 변수 선택부, 상기 선택된 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천하는 취약 커널 변수 추천부 및 기 발견된 취약 커널 변수에 대한 정보를 참조하여 상기 추천된 취약 커널 변수의 순위를 결정하는 순위 결정부를 포함한다.
또한, 본 발명의 제 2 측면에 따른 취약 커널 변수 추천 방법은 리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 커널 변수를 추출하는 단계, 상기 추출된 커널 변수 중 권한 상승과 관련된 커널 변수를 선택하는 단계, 상기 선택된 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천하는 단계 및 기 발견된 취약 커널 변수에 대한 정보를 참조하여 상기 추천된 취약 커널 변수의 순위를 결정하는 단계를 포함한다.
전술한 본 발명의 과제 해결 수단에 의하면, 새롭게 개발된 리눅스 커널 소스를 자동으로 분석하여 취약 가능성이 높은 순서대로 커널 변수를 표시할 수 있다. 그에 따라, 개발자들은 취약 가능성이 높은 커널 변수를 확인할 수 있고, 이를 수정하거나, 적합한 예외 처리를 하여 오류가 발생하지 않도록 한다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 일 실시예에 따른 리눅스 취약 커널 변수 추천 장치를 도시한 도면이다.
리눅스 취약 커널 변수 추천 장치(100)는 커널 변수 추출부(110), 커널 변수 선택부(120), 시스템 콜 트리 생성부(130), 기 발견된 취약 정보 저장부(140), 취약 커널 변수 추천부(150), 순위 결정부(160)를 포함한다.
참고로, 본 발명의 실시예에 따른 도 1에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다.
그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.
구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.
커널 변수 추출부(110)는 리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 모든 커널 변수를 추출한다. 또한, 각 커널 변수의 형태, 위치 및 기능 등의 정보를 함께 추출한다.
먼저, 리눅스 커널 변수에 대하여 설명하면, 리눅스 커널 소스에서 변수는 정수 오류, 한계 오류, 권한 오류, 초기화 오류, 반환 값 오류, 입력 값 오류, 값 비교 오류 등을 발생시킬 수 있다. 이와 같은 오류는 로컬 시스템인 경우 관리자의 권한을 불법적으로 획득하는 데 악용 될 수 있고, 네트워크 기반의 시스템인 경우 서비스 거부 공격 혹은 분산 서비스 거부 공격으로 악용될 수 있다.
커널 변수는 오류에 노출되어 있기 때문에, 리눅스 커널 소스에 존재하는 변수에 대하여, 적합한 예외 처리를 하지 않을 경우, 여러 가지 오류가 발생하였을 때 심각한 문제를 유발 할 수 있다. 하지만 모든 변수가 취약 커널 변수가 되지는 않는다. 일반적으로 사용자 프로세스는 사용자 권한에서 동작하므로 관리자 권한 하에 있는 임의의 커널 변수들에 영향을 줄 수 없기 때문이다. 그러나 사용자 프로세스가 몇몇 커널 변수에 접근할 수 있는 경로가 존재하는데, 그것은 사용자 프로세스가 시스템 콜을 호출하여 그 안에 있는 커널 변수의 값을 수정하는 경우이다. 그러므로 리눅스 시스템 콜을 통해 사용자가 접근 가능한 커널 변수 중에서 오류에 대한 예외 처리가 충분히 되어 있지 않은 것이 있다면, 그 커널 변수는 사용자의 악의적 공격에 사용될 수 있는 취약 커널 변수가 될 가능성이 매우 높다. 반대로 오류에 대한 예외 처리가 충분히 되어 있지 않은 커널 변수라 할지라도 사용자의 행위로부터 독립적이라면 취약 커널 변수로서의 가능성은 낮다.
커널 변수를 분석하는 도구로서 ctags라는 툴을 사용한다.
도 2는 본 발명의 일 실시예에 따라 커널 변수를 추출하여 나열한 것을 도시한 도면이다.
먼저 방대한 규모의 리눅스 커널 소스 중에서 모든 커널 변수를 정제해내는 작업을 수행한다. 2008년 12월 17일 현재 공개된 최신 리눅스 커널 버전인 2.6.27.9를 기준으로 할 때, 리눅스 커널 소스의 크기는 약 432MB이다. 이 중에서 커널 내부에 존재하는 변수를 선별하기 위해서 프로그램 분석 보조 도구인 ctags를 사용한다.
커널 변수란 리눅스 커널 소스 내에 존재하는 변수이므로, 단순히 리눅스 커널 소스에서 변수만을 추출하면 커널 변수를 얻을 수 있지만, 이때 리눅스 커널 변수 자체만으로는 본 발명에서 필요한 정보를 얻을 수 없다. 본 발명에서는 커널 변수와 시스템 콜 사이와의 연관관계를 파악해야 하는데, 이를 위해서는 본래 변수가 있는 위치 정보뿐 아니라 다른 변수/함수와의 상관관계 정보가 필요하기 때문이다. 그러므로 변수의 형태, 위치, 기능 등의 정보를 함께 저장하여 효율적으로 정제할 수 있도록 하기 위해 ctags를 사용하여 소스 파일의 인덱스 정보를 정제한다. 먼저 ctags를 사용하여 커널 소스 안에 존재하는 함수 및 변수의 상호 호출 및 참조에 대한 정보를 생성한 후, 이렇게 생성된 ctags 인덱스 파일에서 변수가 아닌 부분을 제외하면 커널 변수와 그 변수가 어느 함수에서 참조되었는지에 대한 정보를 파악할 수 있다.
ctags는 현재 Assembler, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim, and YACC 등 25개 언어를 지원하며 리눅스의 기본 에디터인 vi(vim)를 통해 쉽고 빠르게 인덱스 정보를 사용할 수 있다.
ctags의 가장 기본적인 사용법은 리눅스 커널 소스의 루트 디렉토리에서 'ctags -R *' 명령을 실행하면 하위 디렉토리를 포함한 모든 소스와 헤더 파일의 정보를 인덱싱하여 'tags' 라는 이름의 텍스트 파일로 저장한다. 일반적으로 2.6.x 대 버전의 리눅스 커널 소스를 루트에서 인덱싱 하였을 때, tags 파일의 크기는 약 50MB 정도이다.
ctags로 인덱싱 된 tags 파일은 ack나 yacc 등의 툴을 사용하여 필요한 정보들을 포함한 리눅스 커널 변수의 정보를 추출하는 소스로 사용된다.
다시 도 1을 참조하면, 커널 변수 선택부(120)는 상기 추출된 커널 변수 중에서 권한 상승과 관련된 커널 변수를 선택한다.
권한 상승과 관련된 변수는 현재 프로세스가 작업을 수행하기에 충분한 권한을 소유하고 있는지를 판단하는 부분에 사용되고 있는 변수를 의미한다. 즉, 현재 프로세스가 관리자 권한을 소유하고 있는지를 판단하는 부분을 찾아낸다. 이 부분을 찾아내는 방법으로는 종래 알려져 있는 구문 패턴 매칭 방법을 사용할 수 있다. 관리자 권한을 판단하는 부분은 일정한 형태의 구문을 사용하고 있기 때문이다. 예를 들어, “cro= 속성값”과 같은 형태의 구문이 포함된 경우 해당 커널 변수는 권한 상승과 관련된 변수인 것으로 판단한다.
다음으로, 시스템 콜 트리 생성부(130)는 리눅스 커널 소스에 포함된 모든 시스템 콜의 계층 구조를 분석하여 시스템 콜 트리를 생성한다. 시스템 콜은 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영체제의 루틴을 호출하여 이용하는 것을 뜻한다.
사용자의 행위가 리눅스 커널 소스의 변수에 영향을 미칠 수 있는 경우는 제한 적이다. 즉, 사용자의 입력 값이나 사용자 권한의 프로세스가 커널 변수에 영향을 주는 경우로서, 시스템 콜을 통해서만 사용자의 행위가 커널 변수에 영향을 미칠 수 있다. 리눅스의 시스템 콜은 시그널과 관련된 31개의 자주 사용되는 시스템 콜이 있으며, 2008년 12월 17일 현재 최신 버전의 커널인 2.6.27.9를 기준으로 332개가 존재한다. 또한 시스템 콜이 추가되는 경우도 있다.
따라서 사용자의 행위를 통한 취약 커널 변수의 변경 가능성을 검증하기 위하여 먼저 리눅스 시스템에 존재하는 모든 시스템 콜에 대해 시스템 콜 트리를 생성한 후 그 트리 내의 함수에서 사용된 커널 변수를 확인한다. 이렇게 하면 특정 시스템 콜이 호출되었을 때, 값이 변경 될 수 있는 모든 커널 변수를 얻을 수 있고, 이러한 변수가 곧 사용자의 행위에 의해 변경될 수 있는 커널 변수가 된다.
도 3은 본 발명의 일 실시예에 따라 생성된 시스템 콜 트리를 도시한 도면이다.
메모리의 동적 할당과 관련된 sys_brk() 시스템 콜의 시스템 콜 트리를 구성한 예를 도시하였다.
이 시스템 콜 트리를 분석하면, sys_brk()가 호출될 때 수정되는 모든 커널 변수를 확인할 수 있다. 예를 들면, sys_brk()가 실행되면 sys_brk()는 down_write(), do_munmap(), find_vma_intersection(), vma_enough_memory(), do_brk(), 그리고 up_write()를 호출한다. 그 중에서 do_brk()는 vma_link()를 호출하며, vma_link()는 _vma_link()를 호출하고 그 하위의 _vma_link_rb()를 호출한 다. _vma_link_rb()가 호출될 때마다 _vma_link_rb()에 존재하는 i_count 커널 변수는 증가하므로 사용자는 sys_brk() 호출을 통해 i_count 변수를 변경할 수 있게 된다. 따라서 i_count는 사용자에 의해서 변경 가능한 커널 변수인 것으로 판단한다.
이와 같이 시스템 콜 트리의 생성을 통해 시스템 콜에 의해 호출되는 커널 변수를 확인할 수 있다.
다음으로, 기 발견된 취약 정보 저장부(140)는 리눅스 커널 소스에 포함된 각종 커널 변수 중 취약점이 있는 것으로 알려진 커널 변수의 정보를 저장한다. 이미 발견된 취약 정보는 리눅스의 여러 전문가 그룹에 의하여 발견되고 보고된다. 예를 들면, 특정 웹 사이트(http://www.securityfocus.com/)에 따르면, 2009년 1월 19일 현재 총 368 개의 취약점이 보고되어 있으며, 그 중에 123개의 커널 변수가 취약한 것으로 보고되고 있다. 이렇게, 알려져 있는 취약 정보를 수집하여 기 발견된 취약 정보 저장부(140)에 저장한다. 이때, 취약 커널 변수에 대한 정보와 아울러, 취약 커널 변수가 어떠한 시스템 콜에 의하여 호출되는지 여부에 대한 정보도 함께 저장한다.
다음으로, 취약 커널 변수 추천부(150)는 상기 커널 변수 선택부(120)에 의해서 선택된 권한 상승과 관련된 커널 변수들 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천한다. 시스템 콜 트리 내의 함수에서 사용된 커널 변수를 확인하면, 특정 시스템 콜이 호출되었을 때, 값이 변경 될 수 있는 모든 커널 변수를 얻을 수 있고, 이러한 변수가 곧 사용자의 행위에 의해 변경될 수 있는 커널 변수가 되므로, 이를 취약 커널 변수인 것으로 판단한다.
다음으로, 순위 결정부(160)는 기 발견된 취약 정보 저장부(140)에 저장되어 있는 기 발견된 취약 정보를 참조하여 취약 커널 변수 추천부(150)에 의하여 추천된 취약 커널 변수의 순위를 결정한다. 예를 들면, 추천된 취약 커널 변수 X가 기 발견된 취약 커널 변수 Y와 유사한 패턴으로 사용되고 있는 경우 커널 변수 X가 취약한 것으로 판단하여 추천 순위를 상승시킨다. 이는 커널 변수 X가 커널 변수 Y가 악용되는 방식 혹은 목적으로 시스템 공격에 사용될 가능성이 높기 때문이다.
이를 위해, 순위 결정부(160)는 기 발견된 취약 커널 변수와 시스템 콜 사이의 상관관계 모델을 개발하고, 시스템 콜 내에서 사용되면서 오류에 대한 적절한 예외 처리가 되어 있는 변수들이 기 발견된 취약 커널 변수와 얼마나 유사한 패턴으로 사용되는지를 평가한다. 즉, 기 발견된 취약 커널 변수들이 시스템 콜 내에서 사용되는 패턴을 발견한다면, 이를 이용하여 위험도가 높은 변수를 발견할 수 있다.
상관관계 모델은 확률적 모델, 기계학습적 모델 또는 데이터 마이닝 기법을 활용한 모델 등을 이용하여 생성할 수 있으나, 이에 한정되는 것은 아니다.
이에 순위 결정부(160)는 커널 변수가 각 시스템 콜에서 이용되는 빈도를 바탕으로 하여, 기 발견된 취약 커널 변수가 시스템 콜에서 어떻게 사용되고 있는지에 대한 상관관계 모델을 개발한다.
도 4는 본 발명의 일 실시예에 따른 커널 변수와 시스템 콜의 상관관계를 도시한 그래프이다.
도시된 그래프는 각 시스템 콜에서의 특정 커널 변수(i_count)의 사용 빈도를 나타내고 있다. 가로축은 리눅스의 시스템 콜을 나타내고, 세로축은 특정 커널 변수(i_count) 각 시스템 콜에 나타나는 빈도수를 나타낸다.
특정 커널 변수(i_count)가 sys_signalstack() 시스템 콜에서는 사용되고 있지 않은 반면, sys_brk() 시스템 콜에는 빈도수가 큰 것을 알 수 있다. 만약 특정 커널 변수(i_count)가 기 발견된 취약 커널 변수였다면, 그리고 추천된 취약 커널 변수가 특정 커널 변수(i_count)와 유사한 패턴으로 시스템 콜에서 사용되고 있다면, 그 취약 커널 변수는 특정 커널 변수(i_count)를 이용하여 시스템을 공격하는 방법과 유사한 공격 방법에 사용될 가능성이 매우 높다.
또한, 어떤 특정 시스템 콜이 기 발견된 취약 커널 변수들의 사용과 관련이 많다면 그 시스템 콜은 공격에 자주 사용되고 있음을 의미하고, 따라서 그 시스템 콜에 존재하는 추천된 취약 커널 변수 역시 위험도가 높음을 추론할 수 있다.
정리하면, 취약 커널 변수 추천부(150)는 권한 상승과 관련 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천한다. 다음으로, 순위 결정부(160)는 기 발견된 취약 커널 변수와 시스템 콜과의 상관관계 모델을 이용하여, 추천된 취약 커널 변수의 순위를 결정한다. 이때, 기 발견된 취약 커널 변수와 유사한 패턴으로 시스템 콜에서 사용되는 커널 변수의 순위를 높게 설정한다. 또한, 기 발견된 취약 커널 변수들의 사용과 관련이 많은 시스템 콜에 존재하는 커널 변수의 순위를 높게 설정한다.
도 5는 본 발명의 일 실시예에 따른 취약 커널 변수 추천 방법을 도시한 순 서도이다.
먼저, 리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 모든 커널 변수를 추출하여 정리한다(S510). 이때, ctags라는 툴을 사용하며, 각 커널 변수의 형태, 위치 및 기능 등의 정보를 함께 추출한다.
다음으로, 추출된 커널 변수들 중 권한 상승과 관련된 커널 변수만을 선택한다(S520). 구문 패턴 매칭 방법을 사용하여, 현재 프로세스가 관리자 권한을 소유하고 있는지를 판단하는 부분을 찾아낸다. 예를 들어, “cro= 속성값”과 같은 형태의 구문이 포함된 경우 해당 커널 변수는 권한 상승과 관련된 변수인 것으로 판단한다.
다음으로, 상기 선택된 커널 변수 중에서 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천한다(S530). 시스템 콜이 호출되었을 때, 값이 변경 될 수 있는 커널 변수는 곧 사용자의 행위에 의해 변경될 수 있으므로, 이를 취약 커널 변수인 것으로 판단한다.
다음으로, 기 발견된 취약 커널 변수와의 연관성에 따라 상기 추천된 취약 커널 변수의 순위를 결정한다(S540). 예를 들어, 기 발견된 취약 커널 변수와 유사한 패턴으로 시스템 콜에서 사용되는 커널 변수의 순위를 높게 설정한다. 또한, 기 발견된 취약 커널 변수들의 사용과 관련이 많은 시스템 콜에 존재하는 커널 변수의 순위를 높게 설정한다.
이와 같은 구성에 따라, 새롭게 개발된 리눅스 커널 소스를 도 1의 취약 커널 변수 추천 장치(100)에 입력 시키면, 자동으로 리눅스 커널 소스를 분석하고, 취약 가능성이 높은 커널 변수를 취약 가능성이 높은 순서대로 표시할 수 있다. 그 결과, 개발자들은 취약 가능성이 높은 커널 변수를 확인할 수 있고, 이를 수정하거나, 적합한 예외 처리를 하여 오류가 발생하지 않도록 한다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시예에 따른 리눅스 취약 커널 변수 추천 장치를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따라 커널 변수를 추출하여 나열한 것을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따라 생성된 시스템 콜 트리를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 커널 변수와 시스템 콜의 상관관계를 도시한 그래프이다.
도 5는 본 발명의 일 실시예에 따른 취약 커널 변수 추천 방법을 도시한 순서도이다.
<도면의 주요 부분에 대한 설명>
100: 취약 커널 변수 추천 장치 110: 커널 변수 추출부
120: 커널 변수 선택부 130: 시스템 콜 트리 생성부
140: 기 발견된 취약 정보 저장부 150: 취약 커널 변수 추출부
160: 순위 결정부

Claims (14)

  1. 취약 커널 변수 추천 장치에 있어서
    리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 커널 변수를 추출하는 커널 변수 추출부,
    상기 추출된 커널 변수 중 권한 상승과 관련된 커널 변수를 선택하는 커널 변수 선택부,
    상기 선택된 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천하는 취약 커널 변수 추천부 및
    기 발견된 취약 커널 변수에 대한 정보를 참조하여 상기 추천된 취약 커널 변수의 순위를 결정하는 순위 결정부를 포함하되,
    상기 순위 결정부는 상기 기 발견된 취약 커널 변수와 시스템 콜과의 상관관계 모델을 이용하여, 상기 추천된 취약 커널 변수의 순위를 결정하는 취약 커널 변수 추천 장치.
  2. 제 1 항에 있어서,
    상기 커널 변수 추출부는
    각 커널 변수의 형태, 위치 및 기능 등의 정보를 함께 추출하는
    취약 커널 변수 추천 장치.
  3. 제 1 항에 있어서,
    상기 커널 변수 선택부는
    구문 패턴 매칭 방법에 따라 관리자 권한을 판단하는 구문이 포함되어 있는지 여부에 따라 상기 권한 상승과의 관련성을 판단하는
    취약 커널 변수 추천 장치.
  4. 제 1 항에 있어서,
    상기 리눅스 커널 소스에 포함된 시스템 콜의 계층 구조를 분석하여 시스템 콜 트리를 생성하는 시스템 콜 트리 생성부
    를 더 포함하는 취약 커널 변수 추천 장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 순위 결정부는
    상기 기 발견된 취약 커널 변수가 시스템 콜에 의해 호출된 빈도수를 기초로 패턴을 형성하고, 상기 추천된 취약 커널 변수가 상기 패턴과 유사하게 상기 시스템 콜에 의해 호출되는지 여부에 따라 순위를 결정하는
    취약 커널 변수 추천 장치.
  7. 제 1 항에 있어서,
    상기 순위 결정부는
    상기 추천된 취약 커널 변수가 상기 기 발견된 취약 커널 변수와 상관관계가 있는 시스템 콜에 의해 호출되는지 여부에 따라 순위를 결정하는
    취약 커널 변수 추천 장치.
  8. 취약 커널 변수 추천 방법에 있어서
    리눅스 커널 소스를 분석하여 리눅스 커널 소스에 포함된 커널 변수를 추출하는 단계,
    상기 추출된 커널 변수 중 권한 상승과 관련된 커널 변수를 선택하는 단계,
    상기 선택된 커널 변수 중 시스템 콜에 의해 호출되는 커널 변수를 취약 커널 변수로 추천하는 단계 및
    기 발견된 취약 커널 변수에 대한 정보를 참조하여 상기 추천된 취약 커널 변수의 순위를 결정하는 단계를 포함하되,
    상기 취약 커널 변수의 순위를 결정하는 단계는 상기 기 발견된 취약 커널 변수와 시스템 콜과의 상관관계 모델을 이용하여, 상기 추천된 취약 커널 변수의 순위를 결정하는 것인 취약 커널 변수 추천 방법.
  9. 제 8 항에 있어서,
    상기 커널 변수를 추출하는 단계는
    각 커널 변수의 형태, 위치 및 기능 등의 정보를 함께 추출하는 것인
    취약 커널 변수 추천 방법.
  10. 제 8 항에 있어서,
    상기 커널 변수를 선택하는 단계는
    구문 패턴 매칭 방법에 따라 관리자 권한을 판단하는 구문이 포함되어 있는지 여부에 따라 상기 권한 상승과의 관련성을 판단하는 것인
    취약 커널 변수 추천 방법.
  11. 제 8 항에 있어서,
    상기 리눅스 커널 소스에 포함된 시스템 콜의 계층 구조를 분석하여 시스템 콜 트리를 생성하는 단계
    를 더 포함하는 취약 커널 변수 추천 방법.
  12. 삭제
  13. 제 8 항에 있어서,
    상기 취약 커널 변수의 순위를 결정하는 단계는
    상기 기 발견된 취약 커널 변수가 시스템 콜에 의해 호출된 빈도수를 기초로 패턴을 형성하고, 상기 추천된 취약 커널 변수가 상기 패턴과 유사하게 상기 시스템 콜에 의해 호출되는지 여부에 따라 순위를 결정하는 것인
    취약 커널 변수 추천 방법.
  14. 제 8 항에 있어서,
    상기 취약 커널 변수의 순위를 결정하는 단계는
    상기 추천된 취약 커널 변수가 상기 기 발견된 취약 커널 변수와 상관관계가 있는 시스템 콜에 의해 호출되는지 여부에 따라 순위를 결정하는 것인
    취약 커널 변수 추천 방법.
KR1020090051169A 2009-06-09 2009-06-09 취약 커널 변수 추천 장치 및 방법 KR101048874B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090051169A KR101048874B1 (ko) 2009-06-09 2009-06-09 취약 커널 변수 추천 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090051169A KR101048874B1 (ko) 2009-06-09 2009-06-09 취약 커널 변수 추천 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100132377A KR20100132377A (ko) 2010-12-17
KR101048874B1 true KR101048874B1 (ko) 2011-07-13

Family

ID=43508066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090051169A KR101048874B1 (ko) 2009-06-09 2009-06-09 취약 커널 변수 추천 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101048874B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010047670A (ko) * 1999-11-22 2001-06-15 서평원 유닉스 운영 체제의 시스템 호출 제어 방법 및 동적 커널변경 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010047670A (ko) * 1999-11-22 2001-06-15 서평원 유닉스 운영 체제의 시스템 호출 제어 방법 및 동적 커널변경 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1:한국정보보호학회*
논문2:한국인터넷정보학회*

Also Published As

Publication number Publication date
KR20100132377A (ko) 2010-12-17

Similar Documents

Publication Publication Date Title
Milajerdi et al. Poirot: Aligning attack behavior with kernel audit records for cyber threat hunting
Zhou et al. Fast, scalable detection of" piggybacked" mobile applications
Guarnieri et al. Saving the world wide web from vulnerable JavaScript
Mercaldo et al. Download malware? no, thanks: how formal methods can block update attacks
Crussell et al. Andarwin: Scalable detection of android application clones based on semantics
Nunes et al. phpSAFE: A security analysis tool for OOP web application plugins
US20150207811A1 (en) Vulnerability vector information analysis
Chang et al. Inputs of coma: Static detection of denial-of-service vulnerabilities
Qian et al. Vulhunter: toward discovering vulnerabilities in android applications
BR102015017215A2 (pt) método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório
Shahriar et al. Effective detection of vulnerable and malicious browser extensions
Gasparis et al. Detecting android root exploits by learning from root providers
EP3251047B1 (en) Protection against database injection attacks
CN102867144A (zh) 一种用于检测和清除计算机病毒的方法和装置
Kwon et al. Bingraph: Discovering mutant malware using hierarchical semantic signatures
Bagmar et al. I know what you imported last summer: A study of security threats in thepython ecosystem
US11868465B2 (en) Binary image stack cookie protection
Yang et al. Zebra: Deeply Integrating System-Level Provenance Search and Tracking for Efficient Attack Investigation
KR101048874B1 (ko) 취약 커널 변수 추천 장치 및 방법
Shahriar et al. A model-based detection of vulnerable and malicious browser extensions
Chang et al. Vulnerable service invocation and countermeasures
Rao et al. Mitigating advanced and persistent threat (APT) damage by reasoning with provenance in large enterprise network (MARPLE) Program
Baiardi et al. An obfuscation-based approach against injection attacks
Del Vecchio Understanding the effects of obfuscation on string analysis for malware classification
Hovmark et al. Towards Extending Probabilistic Attack Graphs with Forensic Evidence: An investigation of property list files in macOS

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: 20140617

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150703

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee