[논문 리뷰] MUZZ: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs
Muzz는 스레드 간 상호작용을 고려한 회색 상자 퍼저로, 실행 시간 피드백을 통해 시드 선택 및 실행 전략을 이끄는 세 가지 새로운 인스트루먼테이션—코드 커버리지 중심, 스레드 컨텍스트, 스케줄 간섭—을 통해 기존의 멀티스레드 프로그램 퍼징 기법을 향상시킨다. Muzz는 동시성 버그를 탐지하는 데서 AFL을 능가하며, 12개의 실제 소프트웨어에서 8개의 새로운 동시성 취약점과 19개의 새로운 버그를 발견했고, 그 중 4개는 CVE ID를 할당받았다.
Grey-box fuzz testing has revealed thousands of vulnerabilities in real-world software owing to its lightweight instrumentation, fast coverage feedback, and dynamic adjusting strategies. However, directly applying grey-box fuzzing to input-dependent multithreaded programs can be extremely inefficient. In practice, multithreading-relevant bugs are usually buried in sophisticated program flows. Meanwhile, the existing grey-box fuzzing techniques do not stress thread-interleavings which affect execution states in multithreaded programs. Therefore, mainstream grey-box fuzzers cannot effectively test problematic segments in multithreaded programs despite they might obtain high code coverage statistics. To this end, we propose MUZZ, a new grey-box fuzzing technique that hunts for bugs in multithreaded programs. MUZZ owns three novel thread-aware instrumentations, namely coverage-oriented instrumentation, thread-context instrumentation, and schedule-intervention instrumentation. During fuzzing, these instrumentations engender runtime feedback to stress execution states caused by thread interleavings. By leveraging the feedback in the dynamic seed selection and execution strategies, MUZZ preserves more valuable seeds that expose bugs in a multithreading context. We evaluate MUZZ on 12 real-world software programs. Experiments show that MUZZ outperforms AFL in both multithreading-relevant seed generation and concurrency-vulnerability detection. Further, by replaying the target programs against the generated seeds, MUZZ also reveals more concurrency-bugs (e.g., data-races, thread-leaks) than AFL. In total, MUZZ detected 8 new concurrency-vulnerabilities and 19 new concurrency-bugs. At the time of writing, 4 CVE IDs have been assigned to the reported issues.
연구 동기 및 목표
- 스레드 인터리빙을 고려하지 못하는 주류 회색 상자 퍼저의 한계로 인해 입력에 따라 달라지는 멀티스레드 프로그램 테스트에서 효율성이 떨어지는 문제를 해결한다.
- 복잡한 스레드 스케줄링으로 인해 발생하는 실행 상태를 충분히 자극하지 못해 동시성 취약점과 버그를 놓치는 기존 퍼저의 한계를 극복한다.
- 스레드 간 상호작용을 고려한 인스트루먼테이션으로부터의 실행 시간 피드백을 활용해 멀티스레딩 관련 경로를 전용으로 타겟팅하는 시드를 생성하는 퍼저를 개발한다.
- 실제 멀티스레드 소프트웨어에서 동시성 취약점과 버그를 탐지하는 데 있어 스레드 간 상호작용 관련 시드 생성 및 탐지 능력을 향상시킨다.
- 기존의 동적 동시성 버그 탐지 도구(예: TSan)와 통합하여 생성된 시드를 재실행하고, 이전에 탐지되지 않은 동시성 문제를 드러낸다.
제안 방법
- 스레드 인터리빙에 영향을 받는 실행 상태를 구분하면서도 코드 커버리지를 추적하기 위해 커버리지 중심 인스트루먼테이션을 도입한다.
- 실행 중 스레드의 상태를 모니터링하고 기록함으로써 인터리빙에 특화된 행동을 식별할 수 있도록 스레드 컨텍스트 인스트루먼테이션을 구현한다.
- 퍼징 중에 스레드 스케줄링을 능동적으로 다양화함으로써 드문 또는 복잡한 인터리빙을 유도하기 위해 스케줄 간섭 인스트루먼테이션을 적용한다.
- 세 가지 인스트루먼테이션에서 유도된 피드백을 활용해 동적 시드 선택 전략을 이끌며, 멀티스레딩 관련 경로를 탐색하는 데 중점을 둔다.
- 스레드 간 상호작용에 민감한 피드백을 기반으로 실행 전략을 최적화하여 동시성 민감도가 높은 코드 영역을 효과적으로 탐색한다.
- 기존의 동적 동시성 버그 탐지 도구(예: TSan)와 통합하여 생성된 시드를 재실행하고 데이터 레이스, 데드락 등 동시성 버그를 탐지한다.
실험 결과
연구 질문
- RQ1기존의 접근 방식에 비해 스레드 간 상호작용을 고려한 인스트루먼테이션이 회색 상자 퍼징의 효과성을 멀티스레드 프로그램에서 향상시킬 수 있는가?
- RQ2스레드 인터리빙에 민감한 인스트루먼테이션에서 유도된 피드백은 퍼징에서 시드 선택 및 실행 전략에 얼마나 기여하는가?
- RQ3실제 멀티스레드 소프트웨어에서 Muzz는 AFL 및 기타 최첨단 퍼저보다 더 많은 동시성 취약점과 버그를 탐지할 수 있는가?
- RQ4TSan과 같은 동적 분석 도구와 통합했을 때 Muzz는 이전에 탐지되지 않은 동시성 취약점과 버그를 얼마나 효과적으로 드러내는가?
- RQ5스케줄 간섭 인스트루먼테이션은 퍼징 중 탐색하는 스레드 인터리빙의 다양성을 상당히 증가시켜 멀티스레딩 관련 경로의 커버리지 향상에 기여하는가?
주요 결과
- Muzz는 스레드 인터리빙으로 인해 발생하는 복잡한 실행 상태를 타겟팅하는 데서 AFL보다 뛰어난 효과를 보이며, 멀티스레딩 관련 시드 생성 능력을 입증한다.
- Muzz는 실제 멀티스레드 소프트웨어에서 8개의 새로운 동시성 취약점을 탐지했으며, 그 중 4개는 CVE ID를 할당받았다.
- 생성된 시드를 TSan으로 재실행함으로써 Muzz는 AFL이 탐지하지 못한 19개의 새로운 동시성 버그(데이터 레이스 및 스레드 누출 포함)를 드러냈다.
- 커버리지 중심, 스레드 컨텍스트, 스케줄 간섭 인스트루먼테이션의 통합은 피드백 품질을 크게 향상시키고 더 효과적인 퍼징 탐색을 이끌었다.
- 12개의 실제 소프트웨어에 대한 실험을 통해 Muzz는 멀티스레딩 관련 경로에서 더 높은 코드 커버리지를 달성하고, AFL 및 MOpt보다 더 많은 동시성 문제를 탐지함을 확인했다.
- Muzz의 피드백 기반 시드 선택 및 실행 전략은 복잡한 스레드 인터리빙 조건에서 버그를 드러내는 시드를 효과적으로 유지하고 우선순위를 매기는 데 성공했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.