[논문 리뷰] NEUZZ: Efficient Fuzzing with Neural Program Learning
NEUZZ는 실제 프로그램의 불연속적인 분기 행동을 부드럽게 하는 신경망 기반 대체 모델을 사용하는 새로운 퍼지 프레임워크를 제안한다. 이로 인해 기울기 지도 입력 생성이 가능해지며, 10개의 실제 프로그램에서 3배 높은 엣지 커버리지와 기존에 알려지지 않은 31개의 버그를 발견하였다. 이는 10개의 최신 회색상자 퍼저보다 뚜렷하게 뛰어난 성능을 보였다.
Fuzzing has become the de facto standard technique for finding software vulnerabilities. However, even state-of-the-art fuzzers are not very efficient at finding hard-to-trigger software bugs. Most popular fuzzers use evolutionary guidance to generate inputs that can trigger different bugs. Such evolutionary algorithms, while fast and simple to implement, often get stuck in fruitless sequences of random mutations. Gradient-guided optimization presents a promising alternative to evolutionary guidance. Gradient-guided techniques have been shown to significantly outperform evolutionary algorithms at solving high-dimensional structured optimization problems in domains like machine learning by efficiently utilizing gradients or higher-order derivatives of the underlying function. However, gradient-guided approaches are not directly applicable to fuzzing as real-world program behaviors contain many discontinuities, plateaus, and ridges where the gradient-based methods often get stuck. We observe that this problem can be addressed by creating a smooth surrogate function approximating the discrete branching behavior of target program. In this paper, we propose a novel program smoothing technique using surrogate neural network models that can incrementally learn smooth approximations of a complex, real-world program's branching behaviors. We further demonstrate that such neural network models can be used together with gradient-guided input generation schemes to significantly improve the fuzzing efficiency. Our extensive evaluations demonstrate that NEUZZ significantly outperforms 10 state-of-the-art graybox fuzzers on 10 real-world programs both at finding new bugs and achieving higher edge coverage. NEUZZ found 31 unknown bugs that other fuzzers failed to find in 10 real world programs and achieved 3X more edge coverage than all of the tested graybox fuzzers for 24 hours running.
연구 동기 및 목표
- 어려운 조건에서 트리거되기 어려운 소프트웨어 취약점을 발견하는 데에 비효율적인 진화적 퍼징의 문제를 해결하기 위해.
- 불연속적이며 비미분 가능한 행동을 보이는 프로그램에서 기울기 지도 최적화의 한계를 극복하기 위해.
- 실제 프로그램의 이산적 분기 행동을 근사하는 부드럽고 대체 가능한 함수를 개발하기 위해.
- 기울기 지도 입력 생성과 신경망 기반 대체 모델을 통합하여 퍼징 효율을 향상시키기 위해.
- 실제 프로그램 실행과의 호환성을 유지하면서, 실세계 프로그램에서 최신 회색상자 퍼저와의 비교를 통해 엣지 커버리지와 새로운 버그 탐지 능력 측정
제안 방법
- 실행 트레이스에서 대상 프로그램의 분기 행동에 대한 부드럽고 미분 가능한 근사를 학습하기 위해 신경망을 훈련한다.
- 훈련된 신경 대체 모델을 사용하여 입력 변형에 대한 프로그램 행동의 기울기를 추정한다.
- 코드 커버리지 최대화 또는 새로운 분기 트리거를 위해 기울기 지도 최적화를 적용하여 입력을 생성한다.
- 퍼징 중에 새로운 실행 피드백을 사용하여 신경 대체 모델을 점진적으로 개선한다.
- 실제 프로그램 실행과 호환성을 유지하면서, 신경 대체 모델과 그레이박스 퍼저를 결합하여 입력 생성을 안내한다.
- 실제 프로그램 내 불연속성에도 불구하고, 신경 모델을 통해 역전파를 사용하여 기울기를 효율적으로 계산한다.
실험 결과
연구 질문
- RQ1신경망은 실제 프로그램의 불연속적이며 비미분 가능한 분기 행동을 효과적으로 근사할 수 있는가?
- RQ2학습된 대체 모델을 사용한 기울기 지도 입력 생성이 퍼징에서 진화적 지도보다 우수한가?
- RQ3신경 대체 모델은 실세계 소프트웨어에서 엣지 커버리지와 새로운 버그 탐지 능력에 얼마나 기여하는가?
- RQ4효율성과 효과성 측면에서 NEUZZ는 최신 회색상자 퍼저와 어떻게 비교되는가?
- RQ5퍼징 중에 대체 모델을 점진적으로 업데이트하여 정확도를 유지하고 탐색을 안내할 수 있는가?
주요 결과
- 24시간 동안 실세계 프로그램에서 실행한 결과, NEUZZ는 모든 테스트된 그레이박스 퍼저보다 3배 높은 엣지 커버리지를 달성했다.
- 10개의 실세계 프로그램에서 10개의 최신 퍼저가 탐지하지 못한 31개의 기존에 알려지지 않은 버그를 NEUZZ가 발견했다.
- 신경 대체 모델은 복잡한 분기 행동을 효과적으로 근사하여, 프로그램의 불연속성에도 불구하고 효과적인 기울기 기반 입력 생성을 가능하게 했다.
- NEUZZ는 모든 평가된 최신 그레이박스 퍼저보다 엣지 커버리지와 새로운 버그 탐지 측면에서 뚜렷이 뛰어났다.
- 기울기 지도 지도와 신경 대체 모델 학습의 통합은 진화적 방법보다 더 빠른 신규 코드 경로 탐색 수렴을 이끌었다.
- 퍼징 중에 신경 모델을 점진적으로 개선함으로써 장기적인 탐색 효율성과 커버리지가 향상되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.