FunFuzz: LLM 기반 진화적 푸징 프레임워크
요약
FunFuzz는 대규모 언어 모델(LLM)을 활용하여 구조화된 입력 생성이 가능하지만, 샘플링 분산과 중복 문제에 취약했던 기존 LLM 기반 푸징의 한계를 극복하기 위해 설계된 다섬(multi-island) 진화적 푸징 프레임워크입니다. 이 프레임워크는 여러 개의 격리된 검색을 병렬로 실행하고, 고가치 후보를 주기적으로 이동시키며 피드백 기반으로 프롬프트를 적응시킵니다. GCC와 Clang 컴파일러에 대한 테스트 결과, FunFuzz는 기존 LLM 기반 방법론보다 높은 커버리지와 더 많은 고유한 충돌 유발 입력을 발견하며 그 효과를 입증했습니다.
핵심 포인트
- FunFuzz는 다섬(multi-island) 진화적 푸징 접근 방식을 사용하여 LLM의 탐색 효율성 문제를 해결합니다.
- 이 프레임워크는 병렬 검색과 고가치 후보 이동을 통해 입력 다양성을 유지하며, 피드백 기반으로 프롬프트를 지속적으로 최적화합니다.
- 푸징 과정에서 점진적 컴파일러 커버리지를 사용하여 후보의 우선순위를 부여하고, 내부 실패 신호를 충돌 탐지에 활용합니다.
- GCC와 Clang 컴파일러를 대상으로 한 실험에서 FunFuzz는 기존 LLM 기반 방법론 대비 우수한 커버리지 및 고유한 취약점 발견 능력을 보여주었습니다.
현대적인 푸저 (fuzzer) 는 구조화된 입력을 생성하기 위해 점점 더 큰 언어 모델 (LLM, Large Language Models) 을 사용하고 있습니다. 그러나 LLM 기반 푸징은 프롬프트 초기화 및 샘플링 분산에 민감하여 탐색 효율성을 감소시키고 중복된 입력을 초래할 수 있습니다.
본 논문에서는 FunFuzz 를 제시합니다. FunFuzz 는 몇 개의 격리된 검색을 병렬로 실행하고 주기적으로 고가치 후보를 이동시켜 다양성을 유지하는 다섬 (multi-island) 진화적 푸징 프레임워크입니다. FunFuzz 는 문서에서 초기 생성 프롬프트를 유도하고, 주제별 지침으로 섬을 초기화한 후 피드백 기반 선택을 사용하여 프롬프트를 지속적으로 적응시킵니다.
푸징 과정에서 후보는 점진적 컴파일러 커버리지 (incremental compiler coverage) 로 우선순위를 부여받으며, 컴파일러 내부의 실패 신호는 충돌 유발 입력을 식별하는 데 사용됩니다. 우리는 FunFuzz 를 컴파일러 푸징에서 평가했습니다. 여기서 입력은 소스 프로그램이고 성공은 컴파일러 커버리지와 고유한 컴파일러 내부 실패로 측정됩니다.
GCC 와 Clang 의 반복된 24 시간 캠페인 (campaign) 에서 FunFuzz 는 이전 LLM 기반 베이스라인보다 높은 컴파일러 커버리지를 달성하고 더 많은 고유한 실패 유발 입력을 발견했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.CL의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기