LLAMAFUZZ 대형 언어 모델 기반 그레이박스 퍼징

LLAMAFUZZ 대형 언어 모델 기반 그레이박스 퍼징
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

LLAMAFUZZ는 사전 학습된 대형 언어 모델(LLM)을 활용해 구조화된 입력 데이터를 이해하고 변형함으로써 기존 그레이박스 퍼저의 한계를 극복한다. 사전‑미세조정된 LLM은 시드 쌍(원본, 변형)을 학습해 구조를 보존하면서 의미 있는 변이를 생성하고, 비동기 작업 큐를 통해 고속 실행 루프와 병행한다. Magma 벤치마크와 실제 프로그램 실험에서 AFL++ 대비 평균 41개의 버그를 추가 발견하고, 전체 47개의 고유 버그를 식별했으며, 코드 커버리지에서도 27 % 이상 향상되었다.

상세 분석

LLAMAFUZZ는 기존 그레이박스 퍼징이 비트‑레벨 무작위 변이에서 구조화된 데이터(예: XML, 바이너리 포맷)를 다루기 어려운 문제를 LLM의 사전 지식과 미세조정을 통해 해결한다. 논문은 먼저 대규모 공개 데이터와 FuzzBench, AFL++ 실행 로그에서 추출한 시드 쌍을 수집한다. 각 시드 쌍은 원본 시드와 성공적인 변이 시드로 구성되며, 바이너리 파일은 16진수 문자열로 변환해 토큰 길이를 최소화하고, 텍스트 기반 포맷은 프롬프트를 추가한다. 이렇게 전처리된 데이터는 Byte‑Pair Encoding 기반 토크나이저와 함께 LLM에 입력되어 구조 인식과 변이 생성 능력을 학습한다. 미세조정 단계에서는 Supervised Fine‑Tuning(SFT) 손실을 최소화하고, LoRA와 혼합 정밀도(FP16) 양자화를 적용해 학습·추론 비용을 크게 낮춘다.

퍼징 엔진과 LLM은 비동기 작업 큐로 연결된다. 메인 퍼징 루프는 AFL++ 기반의 고속 비트 변이를 기본으로 수행하고, 큐에 LLM 변이 작업이 존재하면 우선적으로 해당 시드를 실행한다. LLM 변이 스레드는 GPU 자원을 사용해 시드를 16진수 형태로 변환 후 구조를 보존하는 변이를 생성하고, 결과 시드를 다시 큐에 삽입한다. 이중‑계층 설계는 LLM의 높은 연산 비용이 퍼징 속도에 미치는 영향을 최소화하면서, 구조 인식 변이가 새로운 경로와 크래시를 탐색하도록 만든다.

실험에서는 Magma V1.2 버그 기반 벤치마크와 15개의 실제 프로그램(다양한 포맷 포함)을 대상으로 AFL++, MoptaF, Honggfuzz, Fairfuzz와 비교했다. LLAMAFUZZ는 평균 41개의 추가 버그를 발견하고, 전체 47개의 고유 버그를 식별했으며, 코드 커버리지 측면에서 AFL++ 대비 27.19 % 향상을 보였다. 특히 구조화된 입력을 요구하는 대상에서 문법 기반 퍼저와 경쟁하거나 우위를 점했으며, 일반 퍼저보다 높은 버그 트리거 비율과 버그 도달 비율을 유지했다.

핵심 인사이트는 (1) LLM이 사전 학습된 데이터 덕분에 다양한 포맷의 구조를 빠르게 파악하고, (2) 미세조정된 시드 쌍을 통해 실제 변이 패턴을 학습함으로써 무작위 변이의 비효율성을 극복한다는 점이다. 또한 비동기 큐 설계는 LLM의 높은 지연을 숨겨 고처리량을 유지하면서도 구조 인식 변이를 제공한다는 점에서 실용적이다. 논문은 LLM 기반 변이가 기존 그레이박스 퍼징에 구조적 인식을 부여함으로써, 높은 스루풋과 높은 탐색 효율을 동시에 달성할 수 있음을 입증한다.


댓글 및 학술 토론

Loading comments...

의견 남기기