← 최신 논문
💻 computer science

Needles at Scale: LLM-Assisted Target Selection for Windows Vulnerability Research

이 논문은 대규모 취약점 연구에서의 타겟 선정 병목 현상을 극복하기 위해, 심볼 복구(Symbolicate), 풍부화(Enrich), 샘플링(Sample) 과정을 거쳐 수백만 개의 함수가 포함된 스트립된 윈도우 바이너리를 우선순위가 높은 고위험 후보군으로 필터링하는 저비용의 LLM 지원 파이프라인인 Symbolicate-Enrich-Sample을 소개한다.

원저자: Michael J. Bommarito II

게시일 2026-06-02
📖 4 분 읽기☕ 가벼운 읽기

원저자: Michael J. Bommarito II

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

윈도우와 같은 현대적인 운영체제를 720만 권의 책이 들어있는 거대하고 오래된 도서관이라고 상상해 보십시오. 이 중 대부분은 아무도 읽지 않는 빈 페이지, 레시피 카드, 혹은 지루한 설명서들입니다. 하지만 이 도서관 어딘가에는 해커들이 침입하기 위해 이용할 수 있는 위험한 함정(취약점)이 숨겨진 몇 페이지가 있습니다.

문제는 보안 연구원들이 어떤 책을 펼쳐야 할지 모른다는 점입니다. 그들은 720만 권의 책을 모두 읽을 수 없습니다. 그것은 평생이 걸리는 일입니다. 보통 그들은 소문을 바탕으로 추측하거나 특정 키워드를 검색해야 하는데, 이는 느리고 비효율적입니다.

이 논문은 이 추측 게임을 해결하기 위한 "Needles at Scale"(또는 Symbolicate-Enrich-Sample 파이프라인)이라는 새로운 시스템을 소개합니다. 이것을 연구원들이 "건초더미"(수백만 개의 안전한 함수들) 속에서 "바늘"(위험한 함정)을 찾도록 도와주는 매우 똑똑하고 저렴한 도서관 조수라고 생각하십시오.

시스템이 작동하는 방식은 다음과 같이 세 가지 간단한 단계로 나뉩니다.

1. "이름표" 단계 (Symbolicate)

도서관의 대부분의 책은 제목과 장 이름이 뜯겨 나간 상태입니다(이것을 "stripped" 파일이라고 합니다). 첫 번째 단계는 출판사(Microsoft)에 가서 모든 책의 모든 장에 대한 공식 이름 목록을 가져오는 것입니다.

  • 역할: 이 시스템은 이러한 공개 이름 목록을 가져와 책에 붙여줍니다. 이제 시스템은 단순히 "제45장, 12페이지"라고 보는 대신, 이것이 실제로 RtlDecompressBuffer 함수라는 것을 알게 됩니다.
  • 결과: 도서관은 이제 명확한 라벨과 함께 정리되었지만, 여전히 규모는 거대합니다.

2. "빠른 스캔" 단계 (Enrich)

이제 책들에 이름이 붙었으므로, 시스템은 저렴하고 빠른 AI(대규모 언어 모델, LLM)를 사용하여 각 책을 빠르게 스캔합니다. 시스템은 책 전체를 단어 하나하나 읽지 않습니다. 대신 각 함수의 "요약 카드"를 살펴봅니다.

  • 요약 카드: 이 카드는 "이 함수가 데이터를 복사하는가?", "이 함수는 시스템의 다른 부분들에 의해 많이 호출되는가?", "인터넷을 통해 접근 가능한가?"와 같은 단순하고 명확한 사실들을 담고 있습니다.
  • AI의 역할: 이 사실들만을 바탕으로, AI는 각 함수에 대해 다음과 같은 등급을 매깁니다.
    • 위험 수준 (Risk Level): 이 함수는 위험한가(Critical) 아니면 지루한가(Info)?
    • 도달 가능성 (Reachability): 해커가 외부에서 이 함수에 도달할 수 있는가, 아니면 내부적으로 잠겨 있는가?
    • "이유" (The "Why"): "이 함수는 크기를 확인하지 않고 사용자 데이터를 복사합니다"와 같은 짧은 이유.
  • 비결: AI는 함수의 이름을 무시하고 오직 사실에만 집중하도록 교육받습니다. 예를 들어, 함수의 이름이 memcpy(위험해 보이는 이름)라 할지라도, 만약 이 함수가 오직 시스템 내부에서만 사용되고 사용자 데이터와는 전혀 접촉하지 않는다면, AI는 이를 "낮은 위험"으로 강등합니다. 반대로, 지루해 보이는 이름이지만 실제로 인터넷으로부터 데이터를 복사하는 함수는 "높은 위험"으로 표시합니다.

3. "단축 목록" 단계 (Sample)

720만 개의 함수를 모두 스캔한 후, 시스템은 방대한 등급 목록을 갖게 됩니다. 시스템은 연구원에게 전체 목록을 주지 않습니다. 대신 특수한 정렬 방법을 사용하여 약 22,000개의 후보가 담긴 단축 목록을 뽑아냅니다.

  • 작동 방식: 시스템은 "위험도가 높으면서" 동시에 "외부로부터 도달 가능한" 함수들을 우선순위에 둡니다. 또한, 연구원이 동일한 유형의 버그 20,000개를 받게 되는 일이 없도록 목록의 다양성을 확보합니다.
  • 목표: 이 과정은 탐색 범위를 720만 개에서 22,000개로 줄여줍니다. 이 정도 규모는 인간(또는 로봇 조수)이 하나씩 직접 읽고 확인할 수 있는 수준입니다.

이 논문이 실제로 발견한 것

  • 필터이지 탐지기가 아닙니다: 저자들은 이 시스템이 버그를 찾는 것이 아님을 매우 명확히 밝히고 있습니다. 이 시스템은 단지 버그가 숨어있을 법한 곳을 찾아줄 뿐입니다. 이는 어디를 봐야 할지 결정하는 데 도움을 주는 도구이지, "여기에 버그가 있다"라고 알려주는 도구가 아닙니다.
  • 매우 선택적입니다: 이 시스템은 보수적입니다. 오직 0.18%의 함수만을 "Critical"로 표시합니다. 이 시스템은 모든 지루하고 안전한 코드(예: 시작 루틴)를 목록의 맨 아래로 성공적으로 밀어냅니다.
  • 결함이 존재합니다: 때때로 AI가 너무 과하게 반응할 때가 있습니다. 예를 들어, 실제로는 파서(parser)처럼 보인다는 이유만으로 함수를 "Critical"로 표시할 수도 있는데, 실제로는 해커가 데이터를 보낼 방법이 없는 경우입니다. 저자들은 이러한 오류를 발견했으며, 이를 수정하기 위한 간단한 규칙들을 제안했습니다 (예: "데이터를 실제로 복사하지 않는다면, 이를 copy-sink 버그라고 부르지 마라").
  • 비용: AI가 모든 함수의 전체 코드가 아닌 짧은 요약본만을 보기 때문에 실행 비용이 매우 저렴합니다.

데이터를 공유하지 않은 이유

저자들은 최종적인 22,000개의 의심스러운 함수 목록을 공개하지 않기로 결정했습니다.

  • 법적 이유: 이 데이터는 Microsoft의 저작권이 있는 소프트웨어에서 파생되었습니다.
  • 안전상의 이유: 만약 그들이 "윈도우를 해킹할 가능성이 가장 높은 장소들"의 목록을 공개한다면, 공격자들에게 지도를 건네주는 꼴이 될 것입니다. 그들은 방어자들이 버그를 찾도록 돕고 싶지만, 공격자들이 먼저 버그를 찾도록 돕고 싶지는 않습니다.

핵심 요약

이 논문은 우선순위 지정 엔진을 제시합니다. 이 시스템은 거대하고 압도적인 문제(700만 개의 함수)를 가져와서, 공공 데이터와 똑똑하고 저렴한 AI를 결래하여 관리 가능한 할 일 목록(22,000개의 함수)으로 바꿉니다. 이것은 마법 같은 버그 탐지기가 아니라, 심층 분석에 시간을 쏟기 전에 어디서부터 조사를 시작해야 할지 결정하는 데 있어 최선의 방법입니다.

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

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

Digest 사용해 보기 →