[논문 리뷰] DeFuzz: Deep Learning Guided Directed Fuzzing
DeFuzz는 사전 훈련된 BiLSTM 모델을 사용하여 함수의 추상구문트리(Abstract Syntax Trees, ASTs)에서 주목사용어(attention words)를 분석함으로써 잠재적인 취약한 코드 위치를 식별하고, 이를 기반으로 AFL 기반의 지향적 퍼징을 수행하는 딥러닝 기반 지향적 퍼징 프레임워크를 제안한다. 이는 실제 소프트웨어 애플리케이션에서 AFL 대비 43% 더 많은 버그를 발견하면서도 코드 커버리지와 효율성을 향상시킨다.
Fuzzing is one of the most effective technique to identify potential software vulnerabilities. Most of the fuzzers aim to improve the code coverage, and there is lack of directedness (e.g., fuzz the specified path in a software). In this paper, we proposed a deep learning (DL) guided directed fuzzing for software vulnerability detection, named DeFuzz. DeFuzz includes two main schemes: (1) we employ a pre-trained DL prediction model to identify the potentially vulnerable functions and the locations (i.e., vulnerable addresses). Precisely, we employ Bidirectional-LSTM (BiLSTM) to identify attention words, and the vulnerabilities are associated with these attention words in functions. (2) then we employ directly fuzzing to fuzz the potential vulnerabilities by generating inputs that tend to arrive the predicted locations. To evaluate the effectiveness and practical of the proposed DeFuzz technique, we have conducted experiments on real-world data sets. Experimental results show that our DeFuzz can discover coverage more and faster than AFL. Moreover, DeFuzz exposes 43 more bugs than AFL on real-world applications.
연구 동기 및 목표
- 기존 퍼징 기법이 높은 코드 커버리지 확보와 특정 취약점 타겟팅에 비효율적인 문제를 해결하기 위해.
- 딥러닝을 활용해 취약성이 의심되는 함수와 코드 위치를 식별함으로써 취약성 탐지에서의 오진(false positives)을 줄이기 위해.
- 소프트웨어 함수의 AST에서 주목사용어 기반 BiLSTM 모델을 사용해 취약한 주소를 예측함으로써 지향적 퍼징의 효율성을 향상시키기 위해.
- 정적 분석(구문트리 추출)과 동적이고 타겟팅된 퍼징을 융합함으로써 소프트웨어 보안 테스팅을 향상시키기 위해.
- 딥러닝이 실제 소프트웨어 취약점에 대한 퍼징을 이끄는 데서 얼마나 효과적인지 평가하기 위해.
제안 방법
- 오픈소스 프로젝트(LibTIFF, LibPNG, FFmpeg)의 소스 코드에서 함수를 추출하고, 추상구문트리(Abstract Syntax Trees, ASTs)를 생성한다.
- Common Vulnerability and Exposures (CVE) 및 National Vulnerability Database (NVD) 기록을 기반으로 함수를 취약 또는 비취약으로 레이블링한다.
- 레이블링된 AST에 대해 주목사용어와 관련된 취약성과 연관된 주요 단어를 식별하기 위해 주목사용어 기반 양방향 장단기 기억망(Bidirectional Long Short-Term Memory, BiLSTM) 모델을 훈련시킨다.
- 훈련된 모델을 사용해 새로운, 미리보지 않은 소프트웨어의 잠재적인 취약한 코드 위치(주소)를 예측한다.
- AFLgo를 사용해 예측된 취약 위치를 대상으로 지향적 퍼징을 수행하며, 변이 작업을 고위험 코드 영역에 집중시킨다.
- 제어 흐름 그래프(Control Flow Graphs, CFGs)를 사용해 현재 실행 경로에서 타겟 위치까지의 경로 거리를 계산하여 퍼징 방향을 이끌어낸다.
실험 결과
연구 질문
- RQ1AST에 기반한 딥러닝 모델이 실제 소프트웨어의 취약한 코드 위치를 정확하게 예측할 수 있는가?
- RQ2예측된 취약 위치를 향해 퍼징을 이끄는 것이 기존의 퍼징 기법에 비해 코드 커버리지 향상과 버그 탐지 성능 향상에 기여하는가?
- RQ3DeFuzz는 AFL 대비 발견한 버그 수와 최초 크래시 발생 시간 측면에서 어떻게 비교되는가?
- RQ4예측된 취약 위치가 실제 버그 위치와 어느 정도 일치하는가?
- RQ5주목사용어 기반 딥러닝과 지향적 퍼징의 조합이 오진을 줄이고 취약성 탐지 성능을 향상시키는 데 얼마나 효과적인가?
주요 결과
- DeFuzz는 일곱 개의 실제 소프트웨어 애플리케이션에서 총 63개의 버그를 발견했으며, AFL은 단지 20개의 버그만 발견했다.
- 실제 소프트웨어 애플리케이션에서 DeFuzz는 AFL보다 43개 더 많은 버그를 노출시켜 취약성 탐지 성능 향상이 뚜렷하게 입증되었다.
- 여섯 개의 애플리케이션에서는 AFL이 24시간 이내에 어떤 크래시도 발견하지 못한 반면, DeFuzz는 모든 여섯 개 애플리케이션에서 크래시를 성공적으로 노출시켰다.
- libming의 일곱 개 응용 프로그램에서 딥러닝 모델은 실제 버그 위치를 정확히 예측했으며, gifsponge의 경우에도 근접한 위치(예: 764/802 대비 771/790)에서 정확한 예측을 이끌어냈다.
- DeFuzz는 무작위 입력 생성이 아닌 예측된 취약 영역에 집중함으로써 더 빠른 코드 커버리지 확보와 높은 효율성을 달성했다.
- 모델은 메모리 초과(out-of-memory) 및 이중 할당 해제(double-free) 버그를 모두 탐지했으며, AFL은 오직 메모리 초과 버그만 탐지할 수 있었다. 이는 DeFuzz가 더 넓은 범위의 취약점 노출를 가능하게 했다는 것을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.