[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 % 이상 우수함.

방법론

  1. 대상 선택 – OSS‑Fuzz 프로젝트에서 함수를 샘플링하며, 준비된 하네스가 없는 내부(비공개) API에 초점을 맞춥니다.
  2. 컨텍스트 강화
    • 룰 엔진이 컴파일 오류(헤더 누락, 정의되지 않은 심볼, 타입 불일치)를 파싱하고 자동으로 수정 사항을 삽입합니다(예: #include 추가, typedef 스텁).
    • 하이브리드 검색 스택이 다음을 질의합니다:
      • Clangd/LSP – 정밀 AST‑레벨 심볼 위치,
      • csearch/ctags – 빠른 거친‑입자 매치, 그리고
      • git‑grep – 폴백.
  3. LLM 프롬프트 – 강화된 컨텍스트(함수 시그니처, 주변 코드 스니펫, 사용 예시)를 최첨단 LLM(예: GPT‑4)에 제공하여 C/C++ 후보 하네스를 생성합니다.
  4. 검증 파이프라인
    • 정적 검사(clang으로 컴파일, clang‑tidy 실행).
    • 동적 정상성 – 최소 입력으로 하네스를 실행해 대상 함수가 실제로 호출되는지 확인합니다.
    • 가짜 정의 탐지기 – 생성된 스텁을 검색된 심볼과 비교해, LLM의 표면‑레벨 메트릭만 만족하는 자리채우기 코드를 잡아냅니다.
  5. 반복적 정제 – 어느 검사라도 실패하면 파이프라인이 다시 돌아가 오류 피드백을 LLM에 제공하고, 하네스가 모든 단계를 통과하거나 타임아웃에 도달할 때까지 반복합니다.

결과 및 발견

MetricC projectsC++ projects
Three‑shot success rate (harness compiles & validates)87 %81 %
Coverage gain (≥1 % increase in target function coverage after 1 h fuzzing)>75 % of generated harnesses>75 % of generated harnesses
Source‑code retrieval hit‑rate>90 % (vs. 58 % for Fuzz Introspector)>90 % (vs. 58 % for Fuzz Introspector)
Overall improvement vs. prior art+20 % success, +10 % coverage boost+20 % success, +10 % coverage boost

핵심 요약

  • 규칙 기반 오류 수정기가 이전에 수동 개입을 필요로 했던 대부분의 빌드 파괴 요소를 제거합니다.
  • 여러 검색 도구를 결합하면 내부 함수에 대한 일반적인 병목 현상인 “missing symbol” 오류를 크게 줄일 수 있습니다.
  • 가짜 정의 필터는 LLM이 검증 메트릭을 조작하는 것을 방지하여 실제로 실행 가능한 하니스만 생성됩니다.

Practical Implications

  • Faster security testing pipelines – 팀은 레거시 코드베이스에 대해 수작업 없이 자동으로 하네스를 생성할 수 있어, 수주에 걸리던 수동 작업을 몇 시간으로 단축합니다.
  • Broader OSS‑Fuzz participation – 이전에 하네스가 없던 프로젝트도 이제 자동으로 온보딩될 수 있어, 지속적인 퍼징의 적용 범위가 넓어집니다.
  • Developer tooling – 규칙 엔진과 하이브리드 검색 스택을 IDE 플러그인으로 재활용하여, 누락된 include나 스텁 구현을 실시간으로 제안할 수 있습니다.
  • Cost reduction – 고품질 하네스는 퍼저가 막다른 길에 머무는 대신 실제 로직을 더 많이 실행하게 하여, 버그 탐지 ROI를 향상시킵니다.
  • LLM safety – 검증 파이프라인은 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
  • 분류: cs.CR, cs.SE
  • 출판일: 2025년 12월 3일
  • PDF: PDF 다운로드
Back to Blog

관련 글

더 보기 »