← 최신 논문
💻 computer science

SeedSmith: LLM-Driven Seed Synthesis for Directed Fuzzing

SeedSmith는 간접 호출과 크래시 전제 조건을 반복적으로 해결함으로써 표적화된 초기 시드를 합성하며, 이를 통해 디렉티드 퍼징(directed fuzzing)을 크게 가속화하고 다양한 입력 형식에 걸쳐 이전에 도달 불가능했던 취약점의 발견을 가능하게 하는 에이전틱 LLM 파이프라인입니다.

원저자: Junmin Zhu, Siyu Liu, Jie Hu, Fabio Gritti, Ati Priya Bajaj, Hulin Wang, Wenbo Guo, Tiffany Bao, Christopher Kruegel, Giovanni Vigna

게시일 2026-07-13
📖 4 분 읽기☕ 가벼운 읽기

원저자: Junmin Zhu, Siyu Liu, Jie Hu, Fabio Gritti, Ati Priya Bajaj, Hulin Wang, Wenbo Guo, Tiffany Bao, Christopher Kruegel, Giovanni Vigna

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

당신이 거대하고 어두운 성 안에서 숨겨진 보물 상자를 찾으려 한다고 상상해 보세요. 당신에게는 돌아다니며 벽에 부딪히고 문을 열려고 시도하는 로봇("퍼저(fuzzer)")이 있습니다. 보통 로봇은 우연히 보물을 발견하기를 바라며 무작위로 배회합니다. 하지만 가끔은, 당신은 보물이 정확히 어디에 있는지 알고 있고(코드의 특정 "싱크(sink)" 함수), 로봇이 그곳으로 곧장 가기를 원합니다. 이것을 **지향형 퍼징(Directed Fuzzing)**이라고 부릅니다.

문제는 무엇일까요? 로봇은 길을 잃거나 갇히기 일쑤입니다. 왜 그럴까요? 로봇이 사용하는 지도가 불완전하기 때문입니다(잠긴 문 뒤의 비밀 통로를 볼 수 없습니다). 또한, 설령 보물이 있는 방을 찾더라도, 그 방을 열기 위한 비밀 암호가 무엇인지 알지 못합니다. 로봇은 그저 막대기로 보물을 쿡쿡 찌르며 부서지기를 바랄 뿐이며, 이는 엄청난 시간이 걸리는 일입니다.

여기에 SeedSmith라는 새로운 시스템이 등장합니다. 이 시스템은 로봇이 움직이기 전부터 움직이는 초스마트 탐정 역할을 합니다. 로봇이 눈먼 채로 배회하게 두는 대신, SeedSmith는 특별한 종류의 인공지능(LLM)을 사용하여 먼저 탐정 업무를 수행합니다.

SeedSmith가 해결하는 두 가지 큰 문제

1. 보이지 않는 지도 (간접 호출 - Indirect Calls)
성 안에 문에 이름이 없는 복도가 있다고 상상해 보세요. 그 문에는 단지 "경비원이 가리키는 문으로 가시오"라는 쪽지만 적혀 있습니다. 로봇의 지도는 직접적인 연결만 보여주기 때문에, 로봇은 이 복도를 막다른 길이라고 생각합니다. 현실 세계에서 이는 컴퓨터 코드의 "간접 호출"과 같습니다. 논문은 이를 수정하지 않으면 로봇이 결코 보물로 가는 경로를 볼 수 없다고 설명합니다. SeedSmith의 탐정 AI는 코드를 읽어 어떤 경비원이 어떤 문을 가리키는지 파악하고, 누락된 경로를 지도 위에 그려 넣습니다.

2. 비밀 암호 (크래시 전제 조건 - Crash Preconditions)
때때로 로봇은 올바른 방을 찾았지만, 보물 상자가 복잡한 퍼즐로 잠겨 있을 수 있습니다. 예를 들어, 특정 키를 잡은 상태에서 세 개의 버튼을 특정 순서대로 눌러야 할 수도 있습니다. 로봇의 무작위 찌르기(변이)는 마치 피아노 건반을 마구 두드리는 원숭이와 같습니다. 운 좋게 맞는 음을 칠 수도 있겠지만, 아마 백만 년이 걸릴지도 모릅니다. SeedSmith의 탐정은 지침을 읽고, 정확한 조합을 파악하여 완벽하게 들어맞는 열쇠를 만들어냅니다.

SeedSmith는 어떻게 작동하는가: 탐정과 제작자

SeedSmith는 단순히 추측하는 것이 아니라, 두 명의 팀처럼 두 단계로 작동합니다.

  • 분석 에이전트 (탐정): 이 시스템의 부분은 보물 상자에서 시작하여 역순으로 작동합니다. 이 부분은 특수한 도구를 사용하여 인간 보안 전문가가 하는 것처럼 함수의 본체와 타입 정의를 "탐색"하며 코드를 읽습니다. 단순히 정적인 지도를 보는 것이 아니라, "누가 이 함수를 호출하는가?", "이 변수에는 어떤 값이 필요한가?"와 같은 질문을 던집니다. 이들은 경로와 크래시를 유발하는 데 필요한 정확한 조건을 찾을 때까지 계속 파고듭니다.
  • 시드 생성 에이전트 (제작자): 탐정이 보고서를 작성하면 제작자가 바통을 이어받습니다. 제작자는 완벽한 "시드"(시작 입력값)를 만들기 위해 파이썬 스크립트를 작성합니다. 만약 보물이 복잡한 이미지 파일이나 특정 네트워크 패킷을 요구한다면, 제작자는 무작위 바이트를 마구 던지는 대신 (디지털 붓과 같은) 라이브러리를 사용하여 이를 완벽하게 구축합니다.

만약 첫 번째 시도가 보물 상자를 부수는 데 실패하면, 시스템은 결과를 확인하고, 실수로부터 배우며, 성공할 때까지 최대 열 번까지 다시 시도합니다.

SeedSmith가 증명하는 것 (그리고 증명하지 못하는 것)

연구진은 두 가지 큰 도전 과제인 Magma(23개의 특정 버그)와 ARVO(26개 프로젝트에서 추출한 115개의 실제 버그)를 통해 이를 테스트했습니다.

결과:

  • 속도: SeedSmith의 시드를 사용했을 때, 로봇은 인기 있는 도구인 **AFL++**에서는 평균 11.51배, AFLGo에서는 14.66배 더 빠르게 크래시를 찾아냈습니다(기본 시작 시드 사용 시와 비교하여).
  • 새로운 발견: ARVO 챌린지에서 SeedSmith는 24시간 동안 실행했음에도 불구하고 결코 찾지 못했던 16개의 버그를 찾는 데 도움을 주었습니다. 이 버그들은 매우 다양한 파일 형식을 가진 10개의 서로 다른 프로젝트에 있었습니다.
  • 원샷 원더 (One-Shot Wonders): 일부 버그의 경우, SeedSmith가 만든 시드가 너무 완벽해서 로봇이 입력을 변이시키기도 전에 즉시 크래시를 발생시켰습니다. 이는 Magma 세트에서 5번 발생했습니다.

SeedSmith가 아닌 것:

  • SeedSmith는 로봇 자체를 고치는 마법 지팡이가 아닙니다. 논문은 SeedSmith가 로봇(퍼저) 내부의 작동 방식을 변경하지 않는다는 점을 명시적으로 밝히고 있습니다. 단지 로봇에게 더 나은 시작점을 제공할 뿐입니다.
  • 모든 퍼징을 대체하는 것이 아닙니다. 논문은 어떤 버그의 경우, 시드가 주어진 후에도 로봇이 여전히 작업을 수행해야 한다고 언급합니다.
  • 모든 문제를 해결한다고 주장하지 않습니다. 논문은 크래시 조건이 극도로 복잡할 경우 로봇이 여전히 타임아웃(시간 초과)을 겪을 수 있음을 인정합니다.

핵심 요요약

SeedSmith를 GPS와 마스터 키 제작자가 결합된 형태라고 생각하세요. 당신이 어두운 성 안으로 로봇을 보내기 전, SeedSmith는 정확한 경로를 파악하고 완벽한 열쇠를 제작합니다. 이 논문은 이러한 접근 방식이 소프트웨어 버그를 찾는 속도를 현저히 높이고, 이전에는 도달이 불가능했던 버그를 찾는 데 도움이 된다는 것을 측정하고 증명했습니다. 이는 단순한 운의 게임을 스마트한 전략의 게임으로 바꾸어 놓으며, 범용적인 로봇들이 지향적인 보물 사냥꾼처럼 행동할 수 있게 해줍니다.

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

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

Digest 사용해 보기 →