[논문 리뷰] V-Fuzz: Vulnerability-Oriented Evolutionary Fuzzing
V-Fuzz는 이진 함수에 대한 신경망 취약성 예측과 진화적 퍼즈를 결합하여 입력을 가능성이 높은 취약한 영역으로 편향시켜 버그 탐지 효율을 높인다. 24시간 실행에서 10건의 CVE(새로운 3건 포함)를 보고하며 Linux 앱과 LAVA-M에서 AFL, AFLfast, VUzzer보다 우수하다.
Fuzzing is a technique of finding bugs by executing a software recurrently with a large number of abnormal inputs. Most of the existing fuzzers consider all parts of a software equally, and pay too much attention on how to improve the code coverage. It is inefficient as the vulnerable code only takes a tiny fraction of the entire code. In this paper, we design and implement a vulnerability-oriented evolutionary fuzzing prototype named V-Fuzz, which aims to find bugs efficiently and quickly in a limited time. V-Fuzz consists of two main components: a neural network-based vulnerability prediction model and a vulnerability-oriented evolutionary fuzzer. Given a binary program to V-Fuzz, the vulnerability prediction model will give a prior estimation on which parts of the software are more likely to be vulnerable. Then, the fuzzer leverages an evolutionary algorithm to generate inputs which tend to arrive at the vulnerable locations, guided by the vulnerability prediction result. Experimental results demonstrate that V-Fuzz can find bugs more efficiently than state-of-the-art fuzzers. Moreover, V-Fuzz has discovered 10 CVEs, and 3 of them are newly discovered. We reported the new CVEs, and they have been confirmed and fixed.
연구 동기 및 목표
- 전통적인 커버리지 기반 접근법보다 취약성 중심의 퍼징을 고무한다.
- 이진 프로그램에서 취약한 구성요소를 예측하는 신경망 모델을 개발한다.
- 예측을 이용해 입력 생성을 편향시키는 취약성 지향 퍼저를 설계한다.
- 실제 이진 파일과 퍼징 벤치마크에서 V-Fuzz를 최신 도구들과 비교하여 평가한다.
제안 방법
- 이진 함수는 Attributed Control Flow Graphs (ACFG)로 표현하고 기본 블록당 255차원 특징 벡터로 변환한다.
- 함수의 취약성 확률을 예측하기 위한 그래프 임베딩 네트워크를 구축하고 라벨이 지정된 취약/보안 데이터로 학습한다.
- 기본 블록에 대해 SVS(bi) = kappa * p_v + omega로 SVS(bi)를 계산하며 kappa=20, omega=0.1이다.
- VP 결과를 사용해 실행 경로 위의 SVS 합계를 점수로 하는 진화적 퍼저를 안내한다(적합도).
- 높은 품질 입력과 크래시의 시드 풀을 유지하고 돌연변이 전략으로 반복한다.
- 진행 상황에 따라 가벼운 돌연변이와 강한 돌연변이 사이를 전환하는 Crash Window Jump 알고리즘을 구현한다.
실험 결과
연구 질문
- RQ1이진 파일에 대한 신경망 취약성 예측기가 커버리지 기반 방법과 비교해 퍼징의 집중도를 향상시킬 수 있는가?
- RQ2실제 이진 파일과 벤치마크에서 취약성 지향 퍼저의 성능은 AFL, AFLfast, VUzzer에 비해 어떠한가?
- RQ3이진 취약성 예측을 위한 효과적인 매개변수 설정(예: kappa, omega) 및 데이터 표현은 무엇인가?
- RQ4취약성 예측을 통합하면 버그 발견 시간 단축과 고유한 크래시/ CVE 증가로 이어지는가?
주요 결과
- V-Fuzz는 AFL, AFLfast, VUzzer보다 24시간 이내에 더 많은 고유 크래시를 발견한다.
- 이 프레임워크는 10개의 CVE를 발견했으며 그중 3개는 새로 발견되어 확인되고 수정되었다.
- 본 방법은 평가를 위해 10개의 Linux 애플리케이션과 3개의 LAVA-M 프로그램을 활용한다.
- ACFG 그래프를 기반으로 한 취약성 예측은 전체 코드 커버리지를 요구하지 않고도 표적 퍼징을 가능하게 한다.
- SVS 가중치는 입력을 잠재적으로 취약한 영역으로 안내하여 효율성을 높이고 거짓 음성(false negatives)을 완화한다.
- Crash Window Jump 전략은 탐색과 진전의 균형을 맞추기 위해 돌연변이 강도를 적응적으로 전환한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.