Project Glasswing: Mythos Preview를 활용한 AI 기반 취약점 연구의 확장
사이버 보안을 위해 특별히 튜닝된 프런티어 모델의 등장은 범용 AI 어시스턴트에서 복잡한 추론이 가능한 전문화된 도구로의 전환을 의미합니다. Cloudflare는 최근 Project Glasswing에 참여하여 Anthropic의 Mythos Preview를 활용해 자사의 저장소 50개 이상을 분석했습니다. 목표는 단순히 버그를 찾는 것이 아니라, 이러한 모델이 취약점 공격 가능성(exploitability)에 대해 어떻게 추론하는지, 그리고 이를 대규모로 효과적으로 배포하기 위해 필요한 인프라를 어떻게 구축할 것인지 이해하는 것이었습니다.
능력의 도약: 단순한 버그 헌팅을 넘어
Cloudflare의 조사 결과에 따르면, Mythos Preview는 단순한 이전 모델의 개선이 아닌 능력의 근본적인 변화를 나타냅니다. 범용 모델은 종종 고립된 버그를 식별할 수 있지만, 일반적으로 의심되는 결함과 작동하는 익스플로잇 사이의 간극을 메우는 데 어려움을 겪습니다. Mythos Preview는 두 가지 핵심 영역에서 탁월한 성능을 보입니다:
- Exploit Chain Construction (익스플로잇 체인 구축): 실제 공격은 드물게 단일 취약점에 의존합니다. Mythos Preview는 use-after-free 버그를 임의의 read/write 프리미티브로 전환하는 것과 같이 여러 저위험 프리미티브를 체인으로 연결하여 제어 흐름을 하이재킹하고 전체 시스템 제어권을 획득하는 방법을 추론할 수 있습니다. 이러한 추론 과정은 시니어 보안 연구원의 프로세스를 모방합니다.
- Proof Generation (증명 생성): 모델은 추측에 그치지 않습니다. 버그를 트리거하는 코드를 작성하고, scratch 환경에서 컴파일하고, 실행할 수 있습니다. 실행이 실패하면 모델은 오류를 분석하고, 가설을 조정하며, PoC(Proof of Concept)가 확립될 때까지 반복합니다.
유기적 거부(Organic Refusals)와 노이즈의 문제
표준적인 상업적 보호 장치가 없는 통제된 연구 환경에서도 Mythos Preview는 "유기적 거부"를 보였습니다. 모델은 때때로 정당한 보안 연구 요청을 거부했지만, 이러한 거부는 일관적이지 않았습니다. 한 컨텍스트에서 거부된 요청이 프레임워크를 다르게 구성하거나 환경이 약간 바뀌면 수용될 수도 있었습니다.
또한, Cloudflare는 지속적인 "신호 대 노이즈(signal-to-noise)" 문제를 확인했습니다. AI 모델은 종종 버그가 존재하지 않는 곳에서도 버그를 찾으려는 편향을 보이며, "잠재적으로" 또는 "이론적으로 가능할 수 있다"와 같은 모호한 언어를 자주 사용합니다. 이러한 노이즈는 프로그래밍 언어에 의해 악화됩니다. C와 C++ 같은 메모리 비안전(memory-unsafe) 언어는 Rust와 같은 메모리 안전(memory-safe) 언어보다 훨씬 더 많은 오탐(false positives)을 생성합니다.
왜 범용 코딩 에이전트가 대규모 확장에 실패하는가
Cloudflare는 단순히 범용 코딩 에이전트를 저장소에 연결하는 것만으로는 포괄적인 취약점 연구를 위해 효과적이지 않다는 것을 발견했습니다. 두 가지 주요 병목 현상이 존재합니다:
- Context Limitations (컨텍스트 제한): 코딩 에이전트는 선형적인 작업(기능 구축 또는 버그 수정)을 위해 설계되었습니다. 취약점 연구는 병렬적이고 좁은 영역을 다룹룹니다. 단일 에이전트 세션은 공격 표면의 1%도 채 되지 않는 부분을 다루기도 전에 컨텍스트 윈도우를 소진할 수 있습니다.
- Throughput Constraints (처리량 제약): 단일 스트림 에이전트는 대규모 코드베이스에 필요한 가설의 양을 처리할 수 없습니다. 모델의 원시 지능과 관계없이 상호작용 모델 자체가 병목 현상이 됩니다.
해결책: 다단계 발견 하네스(Multi-Stage Discovery Harness)
이러한 제한을 극복하기 위해 Cloudflare는 여러 전문화된 에이전트의 실행을 관리하는 구조화된 하네스를 개발했습니다. 이 아키텍처는 채팅 인터페이스에서 벗어나 좁고 병렬적인 작업의 파이프라인으로 전환합니다:
| Stage | Action | Purpose |
|---|---|---|
| Recon | Top-down repository analysis | 아키텍처 문서를 생성하고 "방황"을 방지하기 위한 작업 큐를 만듭니다. |
| Hunt | Parallel attack-class searches | 50개 이상의 동시 에이전트가 scratch 디렉토리를 사용하여 버그를 찾고 PoC를 생성합니다. |
| Validate | Adversarial review | 독립적인 에이전트가 노이즈를 줄이기 위해 발견 사항을 반박할 수 있는지 시도합니다. |
| Gapfill | Coverage analysis | 접근했지만 철저히 탐색하지 않은 영역을 다시 큐에 넣습니다. |
| Dedupe | Root cause collapse | 큐 인플레이션을 방지하기 위해 동일한 원인을 공유하는 발견 사항을 병합합니다. |
| Trace | Reachability analysis | 공격자가 제어하는 입력이 시스템 외부에서 실제로 버그에 도달할 수 있는지 판단합니다. |
| Feedback | Loop closure | 도달 가능한 트레이스는 소비자 저장소의 새로운 hunt 작업으로 전환됩니다. |
| Report | Structured output | 정의된 스키마를 통해 발견 사항을 쿼리 가능한 데이터로 변환합니다. |
보안 팀을 위한 전략적 시사점
취약점을 더 빠르게 찾는 능력은 보안 팀이 SLA를 단축하려는 위험한 유혹을를하게 만듭니다. 일부는 CVE 출시부터 패치까지의 시간을 2시간 이내로 보고하기도 합니다. 하지만 Cloudflare는 속도만으로는 충분하지 않다고 경합니다합니다. 만약 회귀 테스트(regression testing)에 하루가 걸린다면, 2시간 SLA를 맞추기 위해 중요한 체크를 건너뛰게 되고, 이는 종종 더 나고은 버그를 더 나중히게 됩니다.
대신, 패치 속도에만 집중하는 대신, **architectural resilience (아키텍처적 복원력)**에 초점을 맞춰야 합니다. 이는 버그가 존재하더라도 공격 가능성을 어렵게 만드는 것을 포함합니다. 버그가 도달할 수 없도록 방어 체계를 구축하고, 시스템 구성 요소 간의 엄격한 격리(isolation)를 설계하고, 글로벌 패치를 즉각적으로 배포포할 수 있는 능력을 보장하는 것을 포함합니다.
커뮤니티 관점
기술적 프레임워크는 견고하지만, 커뮤니티의 일부 관찰자들은 결과의 투명성에 대해 의문을 제기했습니다. Hacker News의 일부 사용자들은 게시물이 발견된 취약점의 총 개수와 심각도 수준에 대한 원시 데이터를 제공하지 않는다는 점을 지적했습니다. 다른 이들은 장기적인 해결책은 모델 가드레일(guardrails)이 아니라—그들이 무의미하다고 보는—근본적인 소프트웨어 작성 방식의 변화라고 주장했습니다. 모든 코드 라인이 프런티어 LLM에 의해 취약점 공격 가능성을 찾기 위해 분석될 것이라고 가정하는 것입니다.