[논문 리뷰] Learning Inputs in Greybox Fuzzing
이 논문은 과거 실행에서 최적의 프로그램 입력을 학습하여 고커버리지 또는 취약성 유발 경로로 탐색을 이끄는 새로운 그레이박스 패치 퍼징 기법을 제안한다. 브랜치 전환 또는 오버플로우 조건과 같은 목표 행동에 가까운 정도를 측정하는 사용자 정의 비용 지표를 최소화함으로써, 기존의 패치 퍼징 대비 경로 커버리지(최대 3배)와 버그 탐지(최대 38% 더 높음)를 크게 향상시키며, 종종 수개의 주기보다 훨씬 빠른 속도로 작동한다.
Greybox fuzzing is a lightweight testing approach that effectively detects bugs and security vulnerabilities. However, greybox fuzzers randomly mutate program inputs to exercise new paths; this makes it challenging to cover code that is guarded by complex checks. In this paper, we present a technique that extends greybox fuzzing with a method for learning new inputs based on already explored program executions. These inputs can be learned such that they guide exploration toward specific executions, for instance, ones that increase path coverage or reveal vulnerabilities. We have evaluated our technique and compared it to traditional greybox fuzzing on 26 real-world benchmarks. In comparison, our technique significantly increases path coverage (by up to 3X) and detects more bugs (up to 38% more), often orders-of-magnitude faster.
연구 동기 및 목표
- 랜덤 변형의 비효율성으로 인해 기존의 그레이박스 패치 퍼징이 자주 알려진 경로를 재실행하고 복잡하거나 보호된 코드 영역을 놓치는 문제를 해결하기 위해.
- 과거 실행에서 학습한 입력을 통해 실행을 최적의 프로그램 행동으로 이끌어 경로 커버리지와 취약성 탐지 능력을 향상시키기 위해.
- 특정 브랜치를 트리거하거나 오버플로우를 유발하는 것과 같은 원하는 프로그램 상태에 가까운 정도를 기반으로 '최적'의 실행을 정의하는 매개변수 기반 비용 지표 프레임워크를 제안하기 위해.
- 기계적 변형에 의존하는 대신 이전 실행에서 구체적인 입력 값을 학습함으로써 더 빠르고 효과적인 탐색을 가능하게 하기 위해.
- 기호 실행이나 정적 분석 없이도 실행 트레이스에서 입력을 학습하는 것이 기존의 그레이박스 패치 퍼징을 능가할 수 있음을 입증하기 위해.
제안 방법
- 브랜치 조건 전환 또는 취약성 유발과 같은 목표 속성을 만족시키는 데 얼마나 가까운지를 수치화하는 비용 지표를 각 프로그램 실행에 대해 정의한다.
- 여러 프로그램 실행에서 비용 값을 수집하여 입력-비용 쌍의 데이터셋을 구성한다. 여기서 입력은 프로그램 입력이고 비용은 지표 값이다.
- 입력-비용 쌍을 기반으로 회귀 모델(예: 기울기 부스팅 트리)을 훈련시어 새로운 입력의 비용을 예측할 수 있도록 하여, 비용 지표를 최소화할 가능성이 높은 입력을 식별할 수 있도록 한다.
- 학습된 모델을 최적화하여 최소 비용을 갖는 입력을 생성함으로써, 퍼저가 최적의 실행으로 향하도록 이끈다.
- 학습된 입력을 그레이박스 퍼저의 시드 풀에 통합하여, 변형과 실행 우선순위를 높임으로써 새로운 경로로의 수렴 속도를 가속화한다.
- 학습 모델이 더 나은 입력을 찾지 못할 경우 표준 그레이박스 패치 퍼징으로 대체하여, 강건성과 완전성을 확보한다.
실험 결과
연구 질문
- RQ1과거 프로그램 실행에서 학습한 입력이 새로운 코드 경로 탐색에 있어 그레이박스 패치 퍼징의 효율성을 향상시킬 수 있는가?
- RQ2비용 지표 기반 입력 학습 방식이 랜덤 변형 대비 경로 커버리지와 취약성 탐지에서 어떤가?
- RQ3제안된 방법이 기호 실행이나 정적 분석 없이도 더 높은 커버리지와 더 빠른 버그 발견을 달성할 수 있는가?
- RQ4브랜치 커버리지나 취약성 트리거와 같은 원하는 프로그램 행동으로 이끄는 데 가장 효과적인 비용 지표는 무엇인가?
- RQ5이 학습 기반 접근 방식의 성능은 다양한 실제 벤치마크에서 어떻게 스케일링되는가?
주요 결과
- 제안된 학습 기반 그레이박스 패치 퍼징 기법은 26개의 실제 벤치마크에서 기존의 그레이박스 패치 퍼징 대비 최대 3배까지 경로 커버리지를 향상시킨다.
- 이 방법은 표준 그레이박스 패치 퍼징보다 최대 38% 더 많은 버그를 탐지하며, 많은 취약성들이 수개의 주기보다 훨씬 빠르게 발견된다.
- 학습된 입력을 통해 도달하기 어려운 코드 경로를 직접 타겟으로 삼음으로써, 첫 번째 크래시 또는 취약성 트리거까지의 시간을 크게 단축시킨다.
- 이 방법은 모든 26개의 벤치마크에서 베이스라인 그레이박스 패치 퍼징을 뛰어넘어 커버리지 및 버그 탐지 능력에서 일관된 향상을 보였다.
- 비용 지표의 사용은 특정 프로그램 행동, 예를 들어 산술 오버플로우나 조건부 브랜치 트리거를 정확하게 이끄는 데에 기여한다.
- 학습 모델이 최적의 입력을 찾지 못하더라도 표준 퍼징으로 유연하게 대체되므로, 이 방법은 강건하고 효과적인 성능 유지를 유지한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.