Skip to main content
QUICK REVIEW

[논문 리뷰] Angora: Efficient Fuzzing by Principled Search

Peng Chen, Hao Chen|arXiv (Cornell University)|2018. 03. 04.
Software Testing and Debugging Techniques인용 수 20
한 줄 요약

Angora는 기호 실행을 사용하지 않고 경로 제약 조건을 해결함으로써 브랜치 커버리지를 향상시키는 고성능 변형 기반 패러다임 퍼저이다. 이는 확장 가능한 바이트 수준 타인트 추적, 맥락 민감한 브랜치 수 세기, 기울기 하강 기반 검색, 유형/형태 추론, 입력 길이 탐색을 통해 달성된다. Angora는 최신 기술 수준의 퍼저를 뛰어넘으며, LAVA-M에서 103개의 이전에 발견되지 않은 버그를 발견했고, 여덟 개의 성숙한 오픈소스 프로그램에서 총 175개의 새로운 버그를 발견하였다.

ABSTRACT

Fuzzing is a popular technique for finding software bugs. However, the performance of the state-of-the-art fuzzers leaves a lot to be desired. Fuzzers based on symbolic execution produce quality inputs but run slow, while fuzzers based on random mutation run fast but have difficulty producing quality inputs. We propose Angora, a new mutation-based fuzzer that outperforms the state-of-the-art fuzzers by a wide margin. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution. To solve path constraints efficiently, we introduce several key techniques: scalable byte-level taint tracking, context-sensitive branch count, search based on gradient descent, and input length exploration. On the LAVA-M data set, Angora found almost all the injected bugs, found more bugs than any other fuzzer that we compared with, and found eight times as many bugs as the second-best fuzzer in the program who. Angora also found 103 bugs that the LAVA authors injected but could not trigger. We also tested Angora on eight popular, mature open source programs. Angora found 6, 52, 29, 40 and 48 new bugs in file, jhead, nm, objdump and size, respectively. We measured the coverage of Angora and evaluated how its key techniques contribute to its impressive performance.

연구 동기 및 목표

  • 기호 실행 없이도 제약 조건 해결을 효율적으로 수행할 수 있도록 커버리지 기반 퍼징의 확장성과 효과성 격차를 해소하는 것.
  • 맥락 민감성과 정밀한 바이트 수준 타인트 추적을 통합하여 브랜치 커버리지를 향상시키는 것.
  • 기호 실행의 성능 저하 요소를 피하면서도 복잡한 경로 제약 조건을 효율적으로 만족시키는 원칙적인 검색 전략을 개발하는 것.
  • 입력 크기에 의존하는 경로 조건을 유도하기 위해 입력 길이 자동 적응 기능을 제공하는 것.
  • 합성 벤치마크(LAVA-M)와 실제 오픈소스 소프트웨어를 대상으로 평가하여 뛰어난 취약점 탐지 능력을 입증하는 것.

제안 방법

  • 특정 조건 분기 영향을 미치는 입력 바이트를 식별하기 위해 확장 가능한 바이트 수준 타인트 추적을 활용하여 검색 공간을 관련 있는 바이트로만 축소한다.
  • 다른 프로그램 실행 맥락을 구분하기 위해 맥락 민감한 브랜치 수 세기를 사용하여 상태 커버리지 정확도를 향상시킨다.
  • 기호 실행의 고비용을 대체하기 위해 기울기 하강 기반 검색을 적용하여 경로 제약 조건을 만족시키는 원칙적인 방식으로 입력 바이트를 변형한다.
  • 유형과 형태(예: 4바이트 시퀀스에서 32비트 정수)를 추론하여 변형을 이끌고 검색 효율성을 향상시킨다.
  • 입력 길이가 경로 제약 조건에 영향을 미칠 때 이를 감지하고 입력 크기를 적절히 증가시킴으로써 동적으로 입력 길이를 탐색한다.
  • 모든 기법을 변형 기반 퍼저에 통합하여 런타임 오버헤드를 낮추면서도 코드 커버리지를 극대화한다.

실험 결과

연구 질문

  • RQ1기호 실행에 의존하지 않고도 변형 기반 퍼저가 고성능 브랜치 커버리지를 달성할 수 있는가?
  • RQ2맥락 민감한 브랜치 수 세기가 맥락 무관 접근 방식에 비해 상태 탐색을 얼마나 향상시키는가?
  • RQ3기울기 하강 기반 검색이 기호 실행이 어려워하는 복잡한 경로 제약 조건을 효율적으로 만족시킬 수 있는가?
  • RQ4유형/형태 추론과 입력 길이 적응이 퍼징 성능 향상에 얼마나 기여하는가?
  • RQ5실제 취약점 탐지에서 제안된 퍼저는 최신 기술 수준의 도구와 비교해 어떻게 성능을 냈는가?

주요 결과

  • LAVA-M 벤치마크에서 Angora는 'who' 프로그램에서 1,541개의 버그를 발견했으며, 이는 두 번째로 우수한 퍼저인 Steelix의 여덟 배에 달한다.
  • Angora는 LAVA-M 데이터셋에 삽입되었지만 이전 퍼저가 어떤 것도 트리거하지 못했던 103개의 버그를 발견하였다.
  • 여덟 개의 성숙한 오픈소스 프로그램에서 Angora는 'file'에서 6개, 'jhead'에서 52개, 'nm'에서 29개, 'objdump'에서 40개, 'size'에서 48개의 새로운 버그를 발견하였다.
  • 모든 벤치마크에서 Angora는 AFL, VUzzer, Steelix 및 기타 최신 기술 수준의 도구보다 유의미하게 높은 코드 커버리지를 달성하였다.
  • 제거 실험을 통해 기울기 하강법과 바이트 수준 타인트 추적과 같은 핵심 기법이 성능 향상에 크게 기여했음을 확인하였다.
  • 맥락 민감한 커버리지, 타인트 추적, 입력 길이 적응의 조합은 기존 도구보다 더 깊이 있고 다양한 프로그램 상태를 탐색할 수 있도록 하였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.