Skip to main content
QUICK REVIEW

[논문 리뷰] Matryoshka: Fuzzing Deeply Nested Branches

Peng Chen, Jianzhong Liu|arXiv (Cornell University)|2019. 05. 29.
Software Testing and Debugging Techniques참고 문헌 38인용 수 12
한 줄 요약

이 논문은 제어 흐름과 타인트 흐름 의존성을 분석하여 깊이 있는 중첩 조건부 분기로 효율적으로 탐색하는 회색상자 퍼저인 Matryoshka를 제안한다. 세 가지 전략—도달 가능성 우선순위, 만족 가능성 우선순위, 공동 최적화—를 사용하여 복잡한 경로 제약 조건을 해결함으로써 훨씬 높은 코드 커버리지와 13개의 오픈소스 프로그램에서 41개의 새로운 버그(12개의 CVE 포함)를 발견하였다.

ABSTRACT

Greybox fuzzing has made impressive progress in recent years, evolving from heuristics-based random mutation to approaches for solving individual path constraints. However, they have difficulty solving path constraints that involve deeply nested conditional statements, which are common in image and video decoders, network packet analyzers, and checksum tools. We propose an approach for addressing this problem. First, we identify all the control flow-dependent conditional statements of the target conditional statement. Next, we select the data flow-dependent conditional statements. Finally, we use three strategies to find an input that satisfies all conditional statements simultaneously. We implemented this approach in a tool called Matryoshka and compared its effectiveness on 13 open source programs against other state-of-the-art fuzzers. Matryoshka found significantly more unique crashes than AFL, QSYM, and Angora. We manually classified those crashes into 41 unique new bugs, and obtained 12 CVEs. Our evaluation also uncovered the key technique contributing to Matryoshka's impressive performance: it collects only the nesting constraints that may cause the target conditional statements unreachable, which greatly simplifies the constraints that it has to solve.

연구 동기 및 목표

  • 실제 소프트웨어에서 깊이 중첩된 조건부 분기를 도달하는 데 어려움을 겪는 커버리지 기반의 회색상자 퍼저의 문제를 해결하기 위해.
  • 기존 퍼저가 해결하지 못하는 다중 중첩 조건문을 포함한 경로 제약 조건을 식별하고 해결하기 위해.
  • 목표 분기로의 도달 불가능성을 초래할 수 있는 조건문들에만 집중하여 검색 공간을 줄이기 위해.
  • 이미지/비디오 디코더, 네트워크 파서, 체크섬 도구 등에서 취약점을 발견하는 데 퍼저의 효과를 향상시키기 위해.
  • 도달 가능성, 만족 가능성, 공동 최적화 전략을 통합한 통합 프레임워크를 설계하기 위해.

제안 방법

  • 목표 분기로의 도달 가능성을 위해 반드시 만족되어야 할 제어 흐름 의존 조건문을 식별한다.
  • 입력 바이트 중 관련 조건문으로 흐르는 것들만 선택하기 위해 타인트 분석을 적용하여 검색 공간을 줄인다.
  • 도달 가능성 우선순위를 적용하여, 만족되지 않을 경우 목표 경로를 차단하는 조건문에 초점을 맞춘다.
  • 만족 가능성 우선순위를 사용하여 가장 제약이 강한 조건자표를 먼저 만족시키는 방향으로 변형을 이끈다.
  • 공통 입력 의존성을 분석하여 상호의존적인 다수의 조건문을 동시에 만족시키기 위해 공동 최적화를 활용한다.
  • 동적 타인트 추적(DTA++)을 통합하여 데이터 변환 과정에서 과다 타인팅을 최소화하면서도 부족한 타인팅을 방지한다.

실험 결과

연구 질문

  • RQ1제어 의존성으로 인해 도달 불가능한 깊이 중첩된 조건부 분기를 효과적으로 탐색할 수 있는가?
  • RQ2타인트 및 제어 흐름 의존성을 동시에 모델링하여 경로 제약 조건 해결의 복잡성을 어떻게 줄일 수 있는가?
  • RQ3중첩 조건문에서 상호의존적인 경로 제약 조건을 해결하는 데 가장 효과적인 변형 전략은 무엇인가?
  • RQ4도달 가능성 및 만족 가능성 우선순위 전략이 실제 프로그램에서 코드 커버리지 향상에 얼마나 기여하는가?
  • RQ5도달 가능성, 만족 가능성, 공동 최적화 전략을 통합한 통합 전략이 기존 퍼저보다 취약점 탐지 성능을 뛰어나게 할 수 있는가?

주요 결과

  • Matryoshka는 13개의 오픈소스 프로그램에서 AFL, QSYM, Angora보다 유의미하게 높은 누적 라인 및 분기 커버리지를 달성하였다.
  • 이 도구는 41개의 고유한 새로운 버그를 발견하였으며, 그 중 12개는 CVE 식별자 할당을 받았다.
  • Angora에서 해결되지 않은 제약 조건의 90퍼센트 이상이 중첩 조건문으로 인한 것이었으며, 이는 문제의 일반성을 보여준다.
  • 도달 가능성, 만족 가능성, 공동 최적화의 세 핵심 전략은 상호 보완적이며, 단독 전략보다 더 많은 제약 조건을 함께 해결하였다.
  • DTA++를 사용한 동적 타인트 추적 덕분에 정확한 입력 바이트 선택이 가능해져 불필요한 변형을 줄이고 효율성을 향상시켰다.
  • 이러한 접근은 이미지 디코더와 네트워크 패킷 분석기와 같이 중첩 조건문이 흔한 복잡한 실제 프로그램을 효과적으로 처리하였다.

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

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

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

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