본문 바로가기
원문
GitHub Blog: AI & ML· Antonio Morales·· 2026년 9월 25일AI 점수52

GitHub Security Lab, C/C++용 자율형 퍼징 Fuzzing Taskflow 공개

AI-powered fuzzing with the GitHub Security Lab Taskflow Agent

AI 요약

GitHub Security Lab의 Antonio Morales가 C/C++ 프로젝트용 자율형 퍼징 파이프라인 Fuzzing Taskflow를 공개했다. GitHub 리포지토리만 지정하면 하네스 작성, AFL++ 실행, 커버리지 분석, 크래시 트리아지, 취약점 보고서 작성까지 LLM 에이전트가 수행한다. 소스 코드는 오픈소스로 제공된다.

자세히

이 도구의 실행 방법은 seclab-taskflows-fuzzing 리포지토리에서 Codespace를 실행한 뒤 `./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz`처럼 owner/repo 형식으로 대상을 넘기기만 하면 된다. 에이전트가 AFL 설치, 리포지토리 클론, 핵심 함수 식별, 퍼즈 타깃 작성까지 자동으로 진행한다. 이 태스크 플로는 afl-fuzz, clang, LLM이 선택한 빌드 명령을 컨테이너 없이 호스트에서 직접 실행하므로, 프롬프트 인젝션 위험을 고려해 일회용 환경에서 상승된 권한 없이 실행하도록 주의를 기울였다. 기본 모델은 Claude Sonnet 5이며, 내부 테스트를 모두 통과했기 때문이라고 한다. 설정 파일에서 변경할 수 있다.

구조는 셸 드라이버, 단계별 태스크 플로 YAML, AFL 실행과 하네스 컴파일 등을 담당하는 MCP 도구 모음의 3계층으로 이루어진다. 판단은 LLM 에이전트가, 실행은 MCP 도구가 맡는 책임 분리가 설계의 핵심이며, 모든 상태는 SQLite 데이터베이스에 저장된다. 각 하네스는 퍼징용 .afl 바이너리와 커버리지용 .cov 바이너리 두 종류로 빌드된다.

핵심은 커버리지 피드백 루프다. 에이전트는 매 반복마다 AFL을 실행하고, 큐를 재생해 커버리지 리포트를 얻은 뒤, 도달하지 못한 분기에 따라 시드 추가, 하네스 수정, 사전 자동 확장, 또는 건너뛰기를 선택한다. 실행 시간은 반복마다 30초에서 960초까지 두 배씩 늘어나며, 연속 2회 반복에서 라인 커버리지 증가폭이 임계값(기본 1%)보다 작으면 중단된다.

구조를 고려한 입력 생성을 위해 JSON, XML 등 형식별 사전과 커스텀 뮤테이터, 소스 코드에서 문자열과 숫자 상수를 추출하는 사전, 커버리지에 따라 커지는 AFL 사전, 코퍼스 스플라이스 연산자의 네 가지 장치를 갖추고 있다. 코퍼스는 반복과 캠페인을 넘어 보존되며, afl-cmin으로 크기가 줄어든다.

크래시는 afl-tmin으로 최소화되고, ASan 스택 트레이스와 스택 최상단의 해시로 중복이 제거된다. 에이전트는 호출 체인을 공개 API까지 추적해 vulnerability, harness_bug 등의 판정을 붙인 markdown 리포트를 작성하고, 수정 diff와 회귀 테스트 제안도 함께 제공한다. 다만 패치는 'review required'로 취급되며, 판정은 사람이 확인하는 출발점으로 다뤄야 한다고 저자는 밝히고 있다. 진행 상황은 포트 8765의 실시간 HTML 대시보드에서 확인할 수 있다.

출처: GitHub Blog: AI & ML · github.blog