[Paper] HarnessAgent: 툴‑보강 LLM 파이프라인을 활용한 자동 퍼징 하네스 구축 확장
발행: (2025년 12월 3일 오후 12:55 GMT+9)
9 min read
원문: arXiv
Source: arXiv - 2512.03420v1
개요
이 논문은 HarnessAgent 라는 자동 파이프라인을 소개한다. 이 파이프라인은 대형 언어 모델(LLM)과 전통적인 소프트웨어 엔지니어링 도구를 결합해 오픈소스 프로젝트의 수천 개 함수에 대한 퍼징 하네스를 생성한다. 누락된 컨텍스트 문제를 해결하고 “구문은 맞지만 의미가 없는” 코드를 걸러냄으로써 HarnessAgent는 LLM 기반 퍼징을 개념 증명 단계에서 확장 가능하고 실제 생산 환경에 적용 가능한 워크플로우로 끌어올린다.
주요 기여
- 규칙 기반 컴파일 오류 완화 – 파이프라인이 중단되기 전에 일반적인 빌드 시 오류를 감지하고 재작성하는 가벼운 정적 분석 레이어.
- 심볼 검색을 위한 하이브리드 툴 풀 – clang 기반 인덱서, 언어 서버 프로토콜, 레포지토리 전체 grep 유틸리티를 통합해 대상 함수의 정확한 소스를 90 % 이상 성공률로 찾음.
- 향상된 하네스 검증 – “가짜” 정의(예: LLM의 검증 지표만 만족하는 자리표시자 스텁)를 조기에 발견하고 거부하는 다단계 검사기.
- OSS‑Fuzz에 대한 실증 평가 – 65개의 C 프로젝트와 178개의 C++ 프로젝트, 총 243개의 대상 함수에 대해 테스트했으며 C는 87 %, C++는 81 %의 성공률을 달성(이전 연구 대비 약 20 % 향상).
- 실제 퍼징 효과 – 생성된 하네스의 75 % 이상이 1시간 퍼징 실행 시 대상 함수 커버리지를 증가시켰으며, 베이스라인보다 10 % 이상 우수함.
방법론
- 대상 선택 – OSS‑Fuzz 프로젝트에서 내부(비공개) API를 샘플링하여 기존에 준비된 하네스가 없는 함수에 집중.
- 컨텍스트 강화
- 규칙 엔진이 컴파일 오류(헤더 누락, 정의되지 않은 심볼, 타입 불일치)를 파싱하고 자동으로 수정(
#include추가,typedef스텁 등)을 삽입. - 하이브리드 검색 스택이 다음을 질의:
- Clangd/LSP – 정밀 AST 수준 심볼 위치,
- csearch/ctags – 빠른 대략적 매치,
- git‑grep – 폴백.
- 규칙 엔진이 컴파일 오류(헤더 누락, 정의되지 않은 심볼, 타입 불일치)를 파싱하고 자동으로 수정(
- LLM 프롬프트 – 강화된 컨텍스트(함수 시그니처, 주변 코드 스니펫, 사용 예시)를 최첨단 LLM(예: GPT‑4)에 전달해 C/C++ 후보 하네스를 생성.
- 검증 파이프라인
- 정적 검사(clang으로 컴파일, clang‑tidy 실행).
- 동적 정상성 – 최소 입력으로 하네스를 실행해 대상 함수가 실제로 호출되는지 확인.
- 가짜 정의 탐지기 – 생성된 스텁을 검색된 심볼과 비교해 표면적인 검증 지표만 만족하는 자리표시자 코드를 잡아냄.
- 반복적 정제 – 어느 검사라도 실패하면 파이프라인이 LLM에 오류 피드백을 제공하고 다시 시도, 모든 단계 통과하거나 타임아웃에 도달할 때까지 반복.
결과 및 인사이트
| Metric | C projects | C++ projects |
|---|---|---|
| Three‑shot success rate (하네스가 컴파일 및 검증 통과) | 87 % | 81 % |
| Coverage gain (1 h 퍼징 후 대상 함수 커버리지 ≥1 % 증가) | 생성된 하네스의 >75 % | 생성된 하네스의 >75 % |
| Source‑code retrieval hit‑rate | >90 % (Fuzz Introspector의 58 % 대비) | |
| Overall improvement vs. prior art | 성공률 +20 %, 커버리지 상승 +10 % | 성공률 +20 %, 커버리지 상승 +10 % |
핵심 요약
- 규칙 기반 오류 수정기가 이전에 수동 개입을 요구하던 대부분의 빌드 파괴 요인을 제거한다.
- 여러 검색 도구를 결합함으로써 내부 함수에 흔히 발생하는 “심볼 누락” 실패를 크게 감소시킨다.
- 가짜 정의 필터가 LLM이 검증 지표만 만족하도록 속이는 것을 방지해 실제 실행 가능한 하네스를 만든다.
실용적 함의
- 보안 테스트 파이프라인 가속 – 팀은 레거시 코드베이스에 대해 하네스를 자동 생성해 수주 걸리던 수작업을 몇 시간으로 단축할 수 있다.
- OSS‑Fuzz 참여 확대 – 이전에 하네스가 없던 프로젝트도 자동으로 온보딩되어 지속적인 퍼징 대상 영역이 넓어진다.
- 개발자 도구 – 규칙 엔진과 하이브리드 검색 스택을 IDE 플러그인으로 재활용해 누락된
#include나 스텁 구현을 실시간으로 제안할 수 있다. - 비용 절감 – 품질 높은 하네스는 퍼저가 실제 로직을 더 오래 실행하게 하여 버그 탐지 ROI를 향상시킨다.
- LLM 안전성 – 검증 파이프라인은 LLM 출력이 피상적인 정답 트릭에 속지 않도록 방어하는 실용적인 패턴을 제공하며, 퍼징을 넘어선 코드 생성 어시스턴트에도 적용 가능하다.
제한 사항 및 향후 연구
- 언어 범위 – 현재 구현은 C와 C++에만 초점; Rust, Go, Java 등으로 확장하려면 언어별 검색 및 컴파일 수정 로직이 필요하다.
- LLM 의존성 – 파이프라인이 많은 LLM 특성을 완화하긴 하지만 여전히 강력한 모델에 의존한다; 규모가 작은 오픈소스 LLM에서는 성능이 저하될 수 있다.
- 동적 분석 깊이 – 검증은 대상 함수가 호출되는지만 확인하고, 입력이 의미 있게 에지 케이스를 탐색하는지는 확인하지 않는다; 커버리지 기반 입력 합성 통합이 다음 단계이다.
- 수백만 함수에 대한 확장성 – 본 연구는 243개의 함수만 평가했으며, 전체 코드베이스에 대한 스트레스 테스트를 통해 실행 시간 및 자원 사용량을 평가할 필요가 있다.
전반적으로 HarnessAgent는 전통적인 툴링과 LLM을 신중히 조합함으로써 자동 퍼징 하네스 생성이 현대 소프트웨어 개발에 실용적이고 확장 가능한 현실이 될 수 있음을 보여준다.
저자
- Kang Yang
- Yunhang Zhang
- Zichuan Li
- GuanHong Tao
- Jun Xu
- XiaoJing Liao
논문 정보
- arXiv ID: 2512.03420v1
- Categories: cs.CR, cs.SE
- Published: December 3, 2025
- PDF: Download PDF