제목
From Alarms to Real Bugs - Multi-target Multi-step Directed Greybox Fuzzing for Static Analysis Result Verification
요약
이 논문은 정적 분석 결과의 효과적인 검증을 위한 새로운 퍼징 기법인 Lyso를 제안합니다. Lyso는 [[다중 지향성 퍼징|다중 지향성 퍼징]], 다단계 유도. 정적 분석에서 얻은 의미론적 정보와 알람 간의 상관관계를 활용 Lyso는 기존 기법들에 비해 평균 12.17배 빠른 속도, 18개의 새 취약점 발견
주요 내용
Lyso의 주요 특징
- 다중 타겟 동시 처리: 상호 의존적인 알람들을 그룹화하여 효율적으로 검증
- 한 목표에 대한 진전이 다른 연관된 목표들의 진전을 가속화
- ![[../lyso 타깃 그룹핑.png|../lyso 타깃 그룹핑.png]]
- 단계별 가이드: 각 알람의 목표를 여러 단계로 나누어 점진적으로 접근
- 정적 분석 정보 활용: 취약한 경로와 알람 간 상관관계 정보를 퍼징에 활용
기술적 구현
- 중요 단계 식별: CFG(Control Flow Graph)와 DFG(Data Flow Graph) 단계를 구분하여 식별
- 단계 추적 시스템: 경량화된 실행 시간 단계 추적 구현
- 각 알람(목표)을 여러 단계로 나누어 접근합니다.
- 이를 통해 복잡한 버그도 단계별로 접근할 수 있게 됩니다.
- 다중 지표 활용: overlap, depth, distance 등의 지표를 통한 씨드 선택 최적화
- Overlap: 씨드 실행 중 적어도 하나의 단계가 커버된 상호 의존적 알람의 수
- Depth: 씨드 실행 중 어떤 알람에 대해 연속적으로 커버된 최대 단계 수
- Distance: 다음 미탐색 단계까지의 거리
- 타임아웃 기반 전환: 고정된 시간 창(현재 10분)을 사용하여 다른 탐색 단계로 전환
- 밀도 기반 전력 스케줄링: 희귀 알람에 대한 탐색 강화
실험 결과
- Magma 벤치마크에서 8개의 최신 퍼저와 비교 평가
- 평균 12.17배 빠른 버그 검증 속도 달성
- 단일 목표에 대해서도 다단계 가이드를 적용 (Lyso-stms)
- AFLGo와 비교했을 때 평균 10.76배의 속도 향상 달성
- 기존 도구들이 찾지 못한 버그들도 발견
- 실제 프로그램 대상 실험에서 18개의 새로운 취약점 발견
비교 대상
-
10i24h
-
비교 대상 퍼저:
- AFL (기준선)
- MOPT
- AFL++
- AFLGo (STSS-DGF 도구)
- [[Titan|Titan]] (MTSS-DGF 도구)
- [[FishFuzz|FishFuzz]] (MTSS-DGF 도구)
- SelectFuzz
-
비교 대상 프로그램 (Magma 벤치마크 사용):
- libpng_fuzzer
- sndfile_fuzzer
- tiff_fuzzer
- tiffcp
- lua
- libxml2_fuzzer
- [[xmllint|xmllint]]
- pdf_fuzzer
-
평가 지표:
- Time-to-Exposure (TTE): 버그를 트리거하는 데 걸린 시간
- Time-to-Reach (TTR): 버그 위치에 도달하는 데 걸린 시간
- Success Rate (SR): 성공적으로 버그에 도달하거나 트리거한 비율
-
실험 환경:
- 하드웨어: Intel(R) Core(TM) i7-12700K, 20코어, 96GB RAM
- 운영체제: Ubuntu 22.04.3 LTS
-
실험 설정:
- 모든 퍼저는 비결정적 모드로 실행
- AFL++의 경우 cmplog 기능 활성화
-
버그 선택:
- MAGMA_LOG 매크로로 표시된 버그 위치를 타겟으로 설정
- 100초 이내에 트리거되거나 24시간 내에 모든 퍼저가 트리거하지 못한 버그는 제외
-
주요 결과:
- Lyso는 평균적으로 다른 퍼저들보다 8.89배 ~ 21.09배 빠른 TTE를 보임
- SelectFuzz와 비교해 2.43배의 속도 향상을 달성
- 30개의 모든 타겟에 도달하여 다른 퍼저들보다 우수한 성능을 보임
-
추가 분석:
- 프로젝트별로 상호의존적 타겟의 영향 평가
- tiffcp 프로그램에 대한 상세 사례 연구 수행
이 실험 설계는 Magma 벤치마크를 사용하여 다양한 실제 프로그램에서 Lyso의 성능을 평가하고 있으며, cxxfilt와 같은 특정 프로그램은 명시적으로 언급되지 않았습니다. 대신 다양한 실제 응용 프로그램을 포함하는 Magma 벤치마크를 사용하여 포괄적인 평가를 수행했습니다.
Lyso의 장점
- 정적 분석 결과의 효과적인 검증 가능
- 다중 알람 동시 처리로 효율성 향상
- 단계별 접근으로 복잡한 버그 발견 능력 향상
- 실제 환경에서의 우수한 성능 입증
한계점 및 향후 연구 방향
- 최적의 단계 수 결정이 경험적으로 이루어짐
- 동적 테인트 분석 기법 도입을 통한 성능 개선 가능성
- 다양한 정적 분석 도구와의 호환성 확대 필요
연구의 의의
- 정적 분석과 동적 퍼징의 효과적인 결합 방법 제시
- 소프트웨어 보안 강화 및 정적 분석 도구의 활용도 개선에 기여
- 오픈 소스로 공개되어 향후 연구 및 실무 적용 가능성 확대