최근 자동화 되는 해킹 및 분석 기술의 발전으로 인하여 수많은 소프트웨어 보안 취약점이 빠르게 발표되고 있다. 대표적인 취약점 데이터베이스인 NVD(National Vulnerability Database)에는 2010년부터 2015년까지 보안 취약점(CVE: Common Vulnerability Enumeration) 약 8만 건이 등록되었으며, 최근에도 점차 증가하고 있는 추세이다. 보안 취약점은 빠른 속도로 증가하고 있는 반면, 보안 취약점을 분석하고 대응하는 방법은 전문가의 수동 분석에 의존하고 있어 대응 속도가 느리다. 이런 문제점을 해결하기 위해 자동화된 방법으로 보안 취약점을 탐색하고, 패치하여 악의적인 공격자에게 공격 기회를 줄 수 있는 보안 취약점을 사전에 대응 할 수 있는 기술이 필요하다. 본 논문에서는 복잡도 분석을 통해 취약점 탐색 대상 바이너리의 특징을 추출하고, 특징에 적합한 취약점 탐색 전략을 선정하여 취약점을 자동으로 탐색하는 기술을 제안한다. 제안 기술은 AFL, ANGR, Driller 도구와 비교 검증 하였으며 코드 커버리지는 약 6% 향상, 크래시 개수는 약 2.4배 증가, 크래시 발생율 약 11% 향상 효과를 볼 수 있었다.
최근 자동화 되는 해킹 및 분석 기술의 발전으로 인하여 수많은 소프트웨어 보안 취약점이 빠르게 발표되고 있다. 대표적인 취약점 데이터베이스인 NVD(National Vulnerability Database)에는 2010년부터 2015년까지 보안 취약점(CVE: Common Vulnerability Enumeration) 약 8만 건이 등록되었으며, 최근에도 점차 증가하고 있는 추세이다. 보안 취약점은 빠른 속도로 증가하고 있는 반면, 보안 취약점을 분석하고 대응하는 방법은 전문가의 수동 분석에 의존하고 있어 대응 속도가 느리다. 이런 문제점을 해결하기 위해 자동화된 방법으로 보안 취약점을 탐색하고, 패치하여 악의적인 공격자에게 공격 기회를 줄 수 있는 보안 취약점을 사전에 대응 할 수 있는 기술이 필요하다. 본 논문에서는 복잡도 분석을 통해 취약점 탐색 대상 바이너리의 특징을 추출하고, 특징에 적합한 취약점 탐색 전략을 선정하여 취약점을 자동으로 탐색하는 기술을 제안한다. 제안 기술은 AFL, ANGR, Driller 도구와 비교 검증 하였으며 코드 커버리지는 약 6% 향상, 크래시 개수는 약 2.4배 증가, 크래시 발생율 약 11% 향상 효과를 볼 수 있었다.
Recent developments in hacking technology are continuing to increase the number of new security vulnerabilities. Approximately 80,000 new vulnerabilities have been registered in the Common Vulnerability Enumeration (CVE) database, which is a representative vulnerability database, from 2010 to 2015, ...
Recent developments in hacking technology are continuing to increase the number of new security vulnerabilities. Approximately 80,000 new vulnerabilities have been registered in the Common Vulnerability Enumeration (CVE) database, which is a representative vulnerability database, from 2010 to 2015, and the trend is gradually increasing in recent years. While security vulnerabilities are growing at a rapid pace, responses to security vulnerabilities are slow to respond because they rely on manual analysis. To solve this problem, there is a need for a technology that can automatically detect and patch security vulnerabilities and respond to security vulnerabilities in advance. In this paper, we propose the technology to extract the features of the vulnerability-discovery target binary through complexity analysis, and select a vulnerability-discovery strategy suitable for the feature and automatically explore the vulnerability. The proposed technology was compared to the AFL, ANGR, and Driller tools, with about 6% improvement in code coverage, about 2.4 times increase in crash count, and about 11% improvement in crash incidence.
Recent developments in hacking technology are continuing to increase the number of new security vulnerabilities. Approximately 80,000 new vulnerabilities have been registered in the Common Vulnerability Enumeration (CVE) database, which is a representative vulnerability database, from 2010 to 2015, and the trend is gradually increasing in recent years. While security vulnerabilities are growing at a rapid pace, responses to security vulnerabilities are slow to respond because they rely on manual analysis. To solve this problem, there is a need for a technology that can automatically detect and patch security vulnerabilities and respond to security vulnerabilities in advance. In this paper, we propose the technology to extract the features of the vulnerability-discovery target binary through complexity analysis, and select a vulnerability-discovery strategy suitable for the feature and automatically explore the vulnerability. The proposed technology was compared to the AFL, ANGR, and Driller tools, with about 6% improvement in code coverage, about 2.4 times increase in crash count, and about 11% improvement in crash incidence.
그러나 퍼징과 기호실행을 결합하는 과정에 있어, 대상 바이너리의 특징을 고려하지 않고 퍼징과 기호실행 간의 단순한 전환이 이루어진다. 본 논문에서는 대상 바이너리의 복잡도를 기반으로 퍼징과 기호실행을 수행하여 취약점을 자동 탐색하는 기술을 제안한다.
제안 방법
그러나 퍼징과 기호실행 간의 스위칭 여부를 판단할 때, 퍼징의 테스트 케이스가 더 이상 상태 전환을 일으키지 못하면 스위칭이 일어나는 형태로 단순 휴리스틱이 적용되어있다. 본 논문에서는 단순한 휴리스틱이 아닌 바이너리 복잡도를 분석하여, 바이너리의 특징을 기반으로 취약점을 탐색하는 기법을 제안한다.
대상 데이터
실험에 사용되는 Dataset은 Darpa에서 주최한 Cyber Grand Challenge 자동 해킹방어 대회에서 활용된 CGC 바이너리 120종을 선정하여 실험했다. CGC 대회는 Decree라는 특수한 환경 위에서 동작하게 설계되어 있으므로, 이를 Linux 운영체제에서 동작할 수 있도록 ELF 파일로 모두 변환하여 테스트하였다.
성능/효과
‘코드 커버리지’는 바이너리 전체 분기 주소를 기록하고, 동적 탐색된 분기 주소를 기록하여, 전체 분기 주소 대비 동적 탐색된 분기 주소를 측정하여 이를 비교하였다. 결과는 Fig. 5와 같으며 Driller 도구 대비 6.24% 향상된 결과를 보였다.
‘Crash 발생율’은 생성된 테스트케이스를 기록하고 크래시 발생 개수를 기록하여 크래시를 유발한 테스트케이스 수 대비 생성된 테스트케이스 수를 계산하여 크래시 발생률을 비교하였다. 결과는 Fig. 7과 같으며 Driller 도구 대비 11% 향상된 크래시를 발생 효율을 보였다.
‘Crash 개수’는 제한 시간 내 크래시 발생 개수를 기록하여 시간당 크래시 개수를 비교하였다. 결과는 아래 Fig. 6과 같았으며 위험도를 기반으로 취약점을 탐색해 AFL 도구보다 단위 시간 내에서 2.38배 많은 755개의 크래시를 발생하였다.
후속연구
이를 위해 바이너리의 복잡도를 분석하여 퍼징과 기호실행을 결합해 취약점을 탐색하는 방안을 제안하였다. 추후에는, 취약한 경로정보를 학습하여 취약점을 탐색하는 고도화 방안에 대해서 연구 할 예정이다.
질의응답
핵심어
질문
논문에서 추출한 답변
기호실행의 단점은?
퍼징 기술의 경우 빠른 속도로 크래시를 발생시킬 수 있으나, 깊은 경로를 탐색하여 취약점을 발생시키기에는 한계점을 가지고 있다. 기호실행의 경우 깊은 경로를 탐색하여 취약점을 발생시킬 수 있으나 프로그램 규모에 따라 실행 속도가 느려지며 자원 소모가 크다는 단점이 있다. 이러한 문제를 해결하기 위하여 얕은 경로에서는 퍼징을 활용해 취약점을 빠르게 탐색하고, 더 이상 경로 탐색이 어려운 경우 기호실행을 활용하여 취약점을 탐색하는 Hybrid 방식의 퍼징 기술이 발표되었다.
취약점 자동 탐색 기술 및 도구에는 무엇이 있나?
최근, 이러한 전문가의 기술 의존도를 해결하고 취약점 탐색에 들어가는 비용을 줄이기 위해 취약점 자동 탐색 기술 및 도구가 등장하고 있다. 보안 취약점 자동 탐색의 대표적인 기술로는 퍼징 및 기호실행이 있다. 퍼징(Fuzzing)은 대상 프로그램에 임의의 입력 값을 반복적으로 생성하고 응용 프로그램이 충돌을 발생하도록 하는 기술이다. 기호실행(Symbolic Execution)은 입력 값을 기호로 지정하고 프로그램의 취약점이 있는 경로에 도달할 수 있는 값을 찾는 방법 이다. 또한 DARPA에서 자동화 해킹 방어 대회인 Cyber Grand Challenge(CGC)를 개최하였다[3].
퍼징의 기본 개념은?
이 경험은 현재 퍼징의 개념으로 이어졌으며 90 개의 유닉스 유틸리티 중 24 % 이상이 퍼징으로 인해 충들을 일으킬 수 있었다. 퍼징의 기본 개념은 테스트케이스를 무작위로 생성하여 대상 소프트웨어에 입력하는 것이다. 퍼징 기술의 초기 단계에서는 대상 SW를 분석하지 않고 입력 값을 무작위로 생성하여 테스트하는 Dumb Fuzzing이 대부분이었다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.