← 최신 논문
💻 computer science

Fuzzing with Agents? Generators Are All You Need

이 논문은 LLM 기반 에이전트가 인간이 작성한 생성자보다 더 높은 분기 커버리지를 달성하며, 생성된 생성자가 구조적·의미적 논리를 충분히 내장하고 있어 기존 퍼징에서 필수적이었던 커버리지 유도 및 변이 전략이 더 이상 필요하지 않음을 보여주는 'Gentoo'라는 도구를 제안합니다.

원저자: Vasudev Vikram, Rohan Padhye

게시일 2026-04-03
📖 3 분 읽기☕ 가벼운 읽기

원저자: Vasudev Vikram, Rohan Padhye

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

🕵️‍♂️ 비유: "현금 인출기 (ATM) 를 터는 도둑"

소프트웨어를 해킹하거나 버그를 찾는 '퍼징 (Fuzzing)'은 마치 현금 인출기 (ATM) 에 온갖 종류의 카드를 꽂아보며 오류를 찾는 과정과 같습니다.

1. 기존 방식: "무작위 던지기" vs "전문가 지도"

  • 기존의 무작위 퍼징 (Greybox Fuzzing):
    도둑이 ATM 에 무작위로 카드와 비밀번호를 입력해 봅니다. "1234", "0000", "9999"... 하지만 ATM 은 대부분 "잘못된 카드입니다"라고 거절합니다. 도둑은 아주 드물게 맞는 카드를 찾아내야 하므로, **커버리지 가이드 (Coverage Guidance)**라는 '지도'를 봅니다. "아, 이쪽 버튼 (코드 경로) 을 누르면 문이 열리네!"라고 알려주는 거죠. 이 지도를 보고 조금씩 카드를 수정해 나갑니다.

    • 문제점: 지도가 있어도, ATM 이 요구하는 '정교한 카드 구조'를 모르면 문이 열리지 않습니다.
  • 기존의 전문가 생성기 (Human-written Generators):
    도둑이 전문가를 고용합니다. "ATM 이 어떤 카드 구조를 원하는지 알고, 그걸 정확히 만들어줘." 전문가 (사람) 는 ATM 의 매뉴얼을 읽고 "아, 이 카드는 16 자리의 숫자여야 하고, 앞 4 자리는 은행 코드여야 해"라고 **정교한 생성기 (Generator)**를 직접 만듭니다.

    • 문제점: 이걸 만들려면 엄청난 시간과 노력이 듭니다. ATM 이 바뀌면 다시 만들어야 하죠.

2. 이 논문의 제안: "AI 에이전트 (Gentoo)"

이 논문은 **"AI 에이전트 (Gentoo)"**를 투입합니다.

  • AI 의 역할: AI 는 ATM 의 소스 코드 (설계도) 를 직접 읽고, "이 ATM 은 이런 구조의 카드를 원하네?"라고 스스로 분석합니다. 그리고 사람이 직접 만든 것처럼 정교한 카드 생성기를 자동으로 코딩합니다.
  • 핵심 발견: AI 가 만든 생성기는 ATM 의 구조를 완벽하게 이해하고 있기 때문에, 더 이상 "지도 (커버리지 가이드)"나 "무작위 수정 (Mutation)"이 필요 없습니다. AI 가 만든 카드만 꽂아도 문이 열리고, 깊은 곳까지 들어갈 수 있습니다.

🧪 실험 결과: AI 가 인간을 이겼다?

연구진은 7 가지 실제 소프트웨어 (자바 라이브러리 등) 를 대상으로 실험했습니다.

  1. 성능 비교:

    • 인간 전문가가 만든 생성기 vs AI 에이전트가 만든 생성기.
    • 결과: 7 개 중 4 개에서 AI 가 만든 생성기가 인간보다 훨씬 더 많은 버그 (코드 경로) 를 찾아냈습니다. 특히 AI 는 인간이 놓친 복잡한 규칙 (예: 상속 관계, 타입 일치 등) 을 스스로 찾아내어 적용했습니다.
  2. 지도 (Coverage Guidance) 는 정말 필요할까?

    • 인간 생성기: 지도가 없으면 문이 잘 안 열립니다. (무작위 던지기로는 한계가 명확함)
    • AI 생성기: 지도가 없어도 문이 잘 열립니다. AI 가 만든 생성기 자체가 너무 완벽해서, 추가적인 지도나 수정이 거의 도움이 되지 않았습니다.
    • 비유: AI 가 만든 카드는 ATM 이 요구하는 '정확한 모양'을 완벽하게 갖췄기 때문에, "여기 누르면 돼"라는 지도가 필요 없는 것입니다.
  3. AI 의 학습 과정 (피드백):

    • AI 는 처음에 완벽하지 않을 수 있습니다. 하지만 "어, 이 문은 안 열렸네?"라는 피드백을 받으면, 스스로 코드를 수정하며 더 정교한 생성기를 만들어냅니다.
    • 특히 **정적 분석 (코드 구조 분석)**을 통해 AI 가 스스로 "어떤 부분이 중요한지"를 찾아내는 방식이 매우 효과적이었습니다.

💡 이 연구가 의미하는 바 (결론)

이 논문의 결론은 매우 단순하지만 혁신적입니다.

"소프트웨어를 테스트할 때, 더 똑똑한 '무작위 던지기 (Mutation)'를 고민할 필요가 없습니다. 대신 '정교한 생성기 (Generator)'를 만드는 데 집중하세요. 그리고 그 생성기를 만드는 일은 이제 AI 에이전트가 해줍니다."

  • 과거: "어떻게 하면 무작위 입력을 조금 더 똑똑하게 수정할까?" (퍼징 엔진 개선)
  • 미래: "어떻게 하면 AI 가 그 프로그램의 규칙을 완벽하게 이해하는 생성기를 만들까?" (생성기 자동화)

한 줄 요약:

"AI 가 소프트웨어의 규칙을 완벽하게 이해하는 '열쇠'를 자동으로 만들어주니, 이제 더 이상 복잡한 '지도'나 '시행착오' 없이도 버그를 찾아낼 수 있다."

이 기술이 발전하면, 앞으로 소프트웨어를 테스트할 때 인간이 복잡한 테스트 코드를 일일이 작성할 필요 없이, AI 에게 "이 프로그램의 버그를 찾아줘"라고 말만 하면, AI 가 스스로 최적의 테스트 도구를 만들어서 해결해 줄 날이 올 것입니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →