← 최신 논문
💻 computer science

Automatic, Expressive, and Scalable Fuzzing with Stitching

이 논문은 LLM 을 활용하여 정적 타입 시스템과 동적 타입 상태 추적을 결합한 '스티칭 (stitching)' 기법을 제안함으로써, 기존 퍼징 도구의 한계를 극복하고 오픈소스 프로젝트에서 높은 정밀도로 새로운 버그를 발견할 수 있는 자동화된 도구인 STITCH 를 개발하고 그 우수성을 입증했습니다.

원저자: Harrison Green, Fraser Brown, Claire Le Goues

게시일 2026-02-24
📖 3 분 읽기☕ 가벼운 읽기

원저자: Harrison Green, Fraser Brown, Claire Le Goues

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

1. 문제: 왜 버그 찾기가 어렵나요?

소프트웨어는 수많은 기능 (API) 들로 이루어진 거대한 도시와 같습니다. 버그를 찾는 '퍼저 (Fuzzer)'라는 자동화된 로봇은 이 도시를 돌아다니며 "여기서 실수할까?"라고 시도해 봅니다.

하지만 기존 로봇들은 두 가지 큰 한계가 있었습니다.

  • 한계 1: 고정된 경로만 다닙니다. (자동화되지 않은 레시피)
    • 기존 로봇은 미리 정해진 "A 를 하고, 그다음 B 를 하고, C 를 한다"는 고정된 레시피만 따릅니다. 하지만 실제 사용자는 A 와 B 를 섞거나, C 를 먼저 할 수도 있습니다. 로봇이 생각하지 못한 복잡한 조합은 놓쳐버립니다.
  • 한계 2: 규칙을 모릅니다. (무작위 폭격)
    • 로봇이 "A 를 하고 B 를 해보자!"라고 무작위로 시도할 때, A 를 하기 전에 반드시 필요한 준비 작업 (예: 문서를 먼저 여는 것) 을 하지 않으면 시스템이 바로 멈춥니다. 로봇은 이걸 '버그'로 착각하고 소란을 피웁니다. 실제로는 그냥 사용법 위반일 뿐인데 말이죠.

2. 해결책: STITCH(스티치) 의 등장

STITCH 는 이 문제를 해결하기 위해 **'조각 (Block)'**과 **'스티치 (Stitch, 꿰매기)'**라는 아이디어를 사용합니다.

비유: 레고 블록과 지시자

상상해 보세요. 소프트웨어의 각 기능은 레고 블록 하나입니다.

  • 기존 방식: 레고로 성을 만들 때, "1 번 블록, 2 번 블록, 3 번 블록" 순서로만 쌓는 고정된 지시서만 줍니다.
  • STITCH 방식:
    1. 블록 조각 만들기: 각 기능 (레고 블록) 을 따로따로 준비합니다.
    2. 동적인 꿰매기: 로봇이 실행하는 동안, 이 블록들을 실시간으로 필요에 따라 꿰매어 연결합니다.
    3. 규칙 지키기 (외부 상태 추적): 여기서 핵심은 **'메모지 (Metadata)'**입니다. 로봇은 "이 블록은 문서를 열어야만 작동한다"는 메모지를 가지고 다닙니다. 문서를 열지 않은 상태에서 연결을 시도하면, 로봇은 "아, 이건 안 되네!"라고 조용히 포기하고 (Bail) 다른 조합을 시도합니다.

이 덕분에 로봇은 수백만 가지의 가능한 조합을 시도하면서도, 실제 사용 가능한 유효한 경우만 집중적으로 탐색할 수 있게 됩니다.

3. STITCH 의 마법: AI (LLM) 의 역할

이 모든 과정을 사람이 일일이 하려면 몇 달이 걸립니다. 그래서 STITCH 는 **AI(대규모 언어 모델, LLM)**를 고용했습니다.

  • 자동 설계자: AI 는 소프트웨어의 설명서 (코드와 주석) 를 읽어서, "어떤 블록이 필요한지", "어떻게 연결해야 하는지"를 자동으로 설계합니다.
  • 수리공: 만약 AI 가 만든 설계가 잘못되어 로봇이 엉뚱한 곳에서 멈춘다면, AI 는 그 오류를 보고 "아, 여기는 문서를 먼저 여는 게 필요했구나!"라고 스스로 수정합니다.
  • 완전 자동화: 사용자는 "이 소프트웨어 주소 (URL) 를 알려주세요"라고만 하면, STITCH 는 모든 설정, 설계, 테스트, 버그 보고서를 자동으로 만들어냅니다.

4. 성과: 얼마나 잘했나요?

연구팀은 STITCH 를 1,365 개의 유명한 오픈소스 프로젝트에 적용해 보았습니다.

  • 결과: 102 개의 프로젝트에서 131 개의 새로운 버그를 찾아냈습니다.
  • 실제 적용: 이 중 73 개의 버그는 이미 개발자들이 수정 (패치) 했습니다.
  • 비교: 기존 최고의 기술들보다 훨씬 더 많은 버그를 찾아냈고, 잘못된 경보 (거짓 경보) 는 훨씬 적게 발생했습니다.

대표적인 사례:

  • OpenCV (이미지 처리 라이브러리): 외부에서 접근 가능한 치명적인 버그를 발견했습니다.
  • libcups (프린터 네트워크 시스템): 해커가 제어할 수 있는 메모리 오류를 찾아냈습니다.

5. 요약: 한 문장으로 정리하면?

"STITCH 는 AI 가 소프트웨어의 사용 규칙을 스스로 배우고, 그 규칙에 맞춰 레고 블록처럼 기능들을 실시간으로 꿰매어 연결함으로써, 기존에는 발견하지 못했던 숨겨진 치명적인 버그들을 자동으로 찾아내는 '자동 버그 사냥꾼'입니다."

이 기술은 소프트웨어가 더 안전하고 튼튼해지는 데 큰 기여를 할 것으로 기대됩니다. 마치 숙련된 요리사가 레시피를 외우는 게 아니라, 재료를 보고 즉석에서 완벽한 요리를 만들어내는 것과 같습니다.

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

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

Digest 사용해 보기 →