에이전트가 취약점을 발견했을 때
Anthropic의 연구 과학자 Nicholas Carlini는 Claude Code을 Linux 커널 소스로 향하게 한 뒤 취약점을 찾으라고 지시했습니다. 설정은 단순합니다. 10줄짜리 bash 스크립트에 ASAN 계측 빌드가 포함된 Docker 컨테이너 하나. 소스 파일을 순회하면서 모델에게 버그를 찾게 하고, 다음 파일로 넘어가는 구조입니다.13
Michael Lynch가 이 발표를 정리한 글에 따르면,2 결과는 NFSv4 LOCK replay 캐시에 존재하던 원격 공격 가능 힙 버퍼 오버플로였습니다. 2003년 3월부터 존재했던, Git 자체보다도 오래된 취약점입니다. 협력하는 두 NFS 클라이언트가 112바이트 버퍼에 1,024바이트 lock owner ID를 오버플로시켜 민감한 커널 메모리를 읽을 수 있습니다. Carlini는 같은 스윕에서 최소 네 건의 커널 취약점을 추가로 발견했습니다. 별도로, 동일한 방법론으로 Mozilla에 전달된 122개의 크래시 입력 중 22개가 CVE를 받았습니다.3 그는 “수백 건의 크래시”가 아직 검증과 보고를 기다리는 상태라고 언급했습니다.2
Carlini는 이 취약점들을 확인한 뒤 메인테이너들에게 보고했습니다. 그가 사용한 모델은 Opus 4.6으로, 실무자들이 매일 코드 리뷰, 리팩터링, 기능 개발에 돌리는 것과 같은 모델 계열입니다. Carlini는 이 결과를 2026년 4월에 열린 [un]prompted AI 보안 컨퍼런스에서 발표했습니다.1
네, AI 에이전트는 인간 전문가들이 수십 년간 놓친 실제 보안 취약점을 찾아낼 수 있습니다. Anthropic 연구원은 Claude Code과 10줄짜리 bash 스크립트로 Linux 커널의 23년 된 원격 공격 가능 힙 버퍼 오버플로를 발견했고, 122개의 크래시 입력에서 22개의 Firefox CVE를 만들어냈습니다. 이 방법론은 맞춤형 프레임워크가 필요 없습니다. ASAN 계측 빌드로 소스 파일을 순회하면서 모델에게 버그를 찾게 하면 됩니다.
TL;DR
Carlini의 방법론은 최소한이었습니다. 소스 파일을 순회하면서 Claude에게 각 파일에서 취약점을 찾도록 프롬프트하고, ASAN 어설션으로 히트를 검증하는 방식입니다. Opus 4.6은 Opus 4.1(8개월 전 모델)이나 Sonnet 4.5(6개월 전 모델)보다 훨씬 많은 취약점을 발견했습니다. 최근에 능력이 어떤 임계값을 넘어섰다는 뜻입니다.2 이제 병목은 AI의 발견이 아니라 인간의 검증입니다. 이 변화는 실무자들이 보안 훅을 어떻게 만들고, 코드 리뷰를 어떻게 돌리며, 에이전트 지원 감사를 어떻게 사고할지에 직접적인 영향을 미칩니다.
핵심 요약
- 보안 엔지니어: 능력은 실재하며 빠르게 향상되고 있습니다. 에이전트 지원 코드 리뷰를 돌리고 있다면, PreToolUse 보안 훅이 어느 때보다 중요합니다. Claude을 막기 위해서가 아니라, 발견한 것으로 무엇을 할 수 있는지 게이트하기 위해서입니다.
- 하네스 제작자: 검증 병목(“아직 검증하지 못한 수백 건의 크래시”)은 하네스의 문제입니다. 자동 분류, 중복 제거, 심각도 분류가 다음 인프라 계층입니다.
- 그 외 모두: 446배 성능 저하를 도입하는 바로 그 모델이 23년간의 인간 리뷰가 놓친 버그도 찾아냅니다. 두 가지는 동시에 참입니다.
방법론
Carlini의 접근에는 맞춤형 보안 프레임워크도, 파인튜닝된 모델도, 특화된 프롬프트도 필요 없었습니다. 그는 이를 “10줄짜리 bash 스크립트에 Docker 컨테이너”라고 묘사했습니다.3
- 대상을 ASAN(AddressSanitizer) 계측으로 컴파일
- 소스 파일을 순회하면서 모델로 보안 관련성을 평가
- 관련성이 높은 파일에 캡처 더 플래그(capture-the-flag) 프레이밍으로 Claude Code에게 프롬프트
- 대상당 여러 번 패스를 실행(코드베이스에 따라 5~20회)
- 공개 전에 자동 비평 에이전트로 발견 내용을 검증
캡처 더 플래그 프레이밍이 중요합니다. 모델에게 “이 코드에 버그가 있다”고 말하는 것은 “이 코드에 문제가 있는지 검토하라”고 하는 것과는 다른 모드를 활성화합니다. 개발자들은 일상적인 사용에서 같은 패턴을 감지합니다. Claude은 “문제가 있을 수 있는지” 물을 때보다 “문제가 있다”고 알려줄 때 더 많은 문제를 찾아냅니다.2
이 스윕에 드는 비용은 인력 개월 수가 아니라 API 토큰입니다. Carlini는 범용 에이전트 CLI으로 확인된 Linux 커널 취약점 5개와 Firefox CVE 22개를 발견했습니다.3 여러분의 단위 테스트를 작성하고 import를 정렬하는 바로 그 도구로요.
능력 임계값
가장 눈에 띄는 발견은 모델 세대 간 격차입니다. Carlini는 이전 모델들로 결과를 재현해보려 했습니다.2
- Opus 4.6 (발표 약 2개월 전 출시): 힙 오버플로와 다수의 추가 취약점 발견
- Opus 4.1 (8개월 전): 극히 일부만 발견
- Sonnet 4.5 (6개월 전): 극히 일부만 발견
모델 세대 사이에서 무언가 임계값을 넘었습니다. 복잡한 코드베이스를 컨텍스트에 유지하고, 함수 경계를 넘나들며 데이터 흐름을 추론하며, 미묘한 명세 불일치를 식별하는 능력이 점진적 개선이 아니라 창발한 것으로 보입니다.
Carlini는 분명히 말했습니다. “저는 제 인생에서 이런 걸 한 번도 찾아본 적이 없습니다. 이건 정말, 정말, 정말 어렵습니다. 그런데 이 언어 모델들로는 여러 개를 찾았습니다.”2
역설
성능 회귀를 도입하는 바로 그 에이전트 아키텍처가 — 3배에서 446배까지 느려지는 118개의 함수 — 수십 년간의 전문가 리뷰가 놓친 보안 취약점도 찾아냅니다. 이는 같은 능력 프로파일의 상호 보완적인 두 측면입니다. 취약점 연구는 근본적으로 알려진 클래스(버퍼 오버플로, use-after-free, 정수 부호 처리)에 대한 패턴 매칭이며, 이는 LLM의 강점입니다.4 성능 최적화는 그 반대를 요구합니다. 특정 실행 컨텍스트, 캐시 동작, 알고리즘 복잡도에 대한 추론입니다. 모델은 수백만 줄의 코드에서 버퍼 오버플로를 알아보지만, 여러분의 접근 패턴에서 해시 맵이 정렬된 배열보다 느리다는 건 말해주지 못합니다. 그에 맞춰 하네스를 구축하세요. 발견을 플래그하는 보안 훅, 커밋 전에 측정하는 성능 훅으로요.
검증 병목
Carlini의 가장 시사적인 고백입니다. “Linux 커널에 버그가 너무 많아서, 아직 검증을 못 해서 보고하지 못한 것들이 있습니다.”2
이제 병목은 발견이 아니라 분류에 있습니다. 잠재 취약점을 찾는 비용이 그것이 실제인지 확인하는 비용보다 낮습니다. 이 반전은 보안 팀들에게 새로운 인프라 문제를 만듭니다.
발견은 자동화됐습니다. 에이전트는 코드베이스를 몇 시간 만에 훑을 수 있습니다.
검증은 수동입니다. 각 잠재 취약점에는 개념 증명, 영향도 평가, 책임 있는 공개 프로세스가 필요합니다.
분류(Triage)가 빈틈입니다. 에이전트가 생성한 수백 개의 발견을 실제 취약점, 오탐, 낮은 심각도 노이즈로 분류하는 일에는 아직 좋은 도구가 없습니다.
이 패턴은 에이전트 지원 코드 리뷰를 반영합니다. 에이전트는 인간이 평가할 수 있는 속도보다 빠르게 원시 출력을 생성합니다. 가치는 생성 자체가 아니라 출력을 처리하고 필터링하며 라우팅하는 인프라에 있습니다.
하네스 제작자에게 이 말은, 다음으로 가치 높은 훅이 보안 스캐너가 아니라는 뜻입니다. 그것은 보안 분류 시스템입니다. 중복 제거, 심각도 분류, 오탐 필터링, 자동 개념 증명 생성이 핵심입니다. 에이전트 출력을 게이트하는 거버넌스 훅이 스캔 능력 자체보다 더 중요합니다.
실무자에게 주는 의미
Claude Code을 프로덕션 코드베이스에서 돌리고 있다면, 여러분은 이미 실제 취약점을 찾아낼 수 있는 시스템을 돌리고 있는 것입니다. 질문은 능력이 존재하는지가 아니라 여러분의 하네스가 에이전트가 찾은 것을 감당할 수 있는지입니다.
세 가지 실용적인 움직임입니다.
리뷰 파이프라인에 보안 스윕을 추가하세요. Write/Edit에 걸린 PostToolUse 훅이 변경된 파일에 대해 타깃 보안 스캔을 트리거할 수 있습니다. 훅은 stdin에서 파일 경로를 읽습니다(Claude Code은 이벤트 JSON을 stdin으로 훅에 전달합니다).
#!/bin/bash
# .claude/hooks/security-scan.sh
FILE_PATH=$(jq -r '.tool_input.file_path // empty' < /dev/stdin)
[ -z "$FILE_PATH" ] && exit 0
[ ! -f "$FILE_PATH" ] && exit 0
claude -p "This file has a security vulnerability. Find it and describe the impact: $FILE_PATH" \
--output-format json >> .claude/security-findings.jsonl 2>/dev/null &
exit 0 # non-blocking, runs in background
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{ "type": "command", "command": ".claude/hooks/security-scan.sh" }]
}]
}
}
위 훅은 출발점이지 프로덕션용이 아닙니다. 중복 제거, 심각도 필터링, 레이트 리밋을 추가해야 합니다. 하지만 핵심 패턴은 Carlini의 방법론과 같습니다. 타깃 프롬프트를 가지고 파일을 순회하는 루프입니다.3
분류 인프라를 구축하세요. 심각도 분류 없는 원시 취약점 발견은 노이즈입니다. 에이전트가 스윕마다 50개의 발견을 낸다면, 사람이 목록을 보기 전에 자동 중복 제거와 우선순위 점수화가 필요합니다. 병목은 하네스의 문제이지 모델의 문제가 아닙니다.
역설을 받아들이세요. 성능 가드레일이 필요한 바로 그 모델이 보안 패턴 매칭에서는 진짜로 탁월합니다. 강점을 활용하고 약점을 보완하도록 하네스를 설계하세요. 스캔하는 보안 훅. 측정하는 성능 훅. 검증하는 품질 훅. 각각이 다른 것들이 놓치는 부분을 덮습니다.
23년 된 Linux 취약점은 숨어 있지 않았습니다. 수천 명의 엔지니어가 읽었던 파일 안에, 훤히 드러난 채 있었습니다. 모델이 찾은 이유는 대규모 패턴 매칭이 이 시스템들이 하는 일이기 때문입니다. 교훈은 에이전트가 보안에서 인간보다 낫다는 것이 아닙니다. 교훈은 에이전트가 다른 표면을 덮는다는 것입니다. 그리고 둘 모두를 오케스트레이션하는 하네스가 그 조합을 신뢰할 수 있게 만드는 것입니다.
업데이트 (2026년 4월 7일): Anthropic는 Project Glasswing을 발표했습니다. Claude Mythos라는 새 모델로, Carlini의 접근을 모든 주요 플랫폼에 걸친 수천 개의 제로데이로 확장한 것입니다. Mythos는 12개 파트너에 한정되어 있으며 일반에 공개되지는 않았습니다. 위 글은 Carlini의 원 연구를 다루고, 후속편은 제품화를 다룹니다.
출처
자주 묻는 질문
Claude Code으로 Carlini의 접근을 재현할 수 있나요?
Carlini는 팟캐스트 인터뷰에서 방법론을 문서화했습니다.3 핵심 루프는 다음과 같습니다. ASAN으로 컴파일하고, 소스 파일을 순회하며, 캡처 더 플래그 프레이밍으로 Claude에게 프롬프트하고, 히트를 검증합니다. Carlini는 Opus 4.6이 이전 모델들보다 훨씬 많은 취약점을 찾았다고 보고했으므로, 다른 모델 세대로는 결과가 다를 수 있습니다.
AI 에이전트가 보안 버그 찾기에서 인간보다 낫다는 뜻인가요?
아닙니다. 에이전트가 다른 표면을 덮는다는 뜻입니다. 에이전트는 대규모 코드베이스에 걸쳐 알려진 취약점 클래스에 대한 패턴 매칭에 뛰어납니다. 인간은 새로운 공격 벡터, 비즈니스 로직 결함, 컨텍스트 의존적 보안 속성을 이해하는 데 뛰어납니다. 둘의 조합은 어느 한쪽만보다 강합니다.
공격자들이 이 능력을 사용하는 것을 걱정해야 하나요?
Carlini는 “큰 물결이 오고 있다”고 분명히 경고했습니다. 방어자가 취약점을 찾는 데 도움이 되는 바로 그 능력이 공격자에게도 있습니다. 비대칭성은 방어자가 분류와 패치를 자동화할 수 있는 반면, 공격자는 여전히 익스플로잇을 개발해야 한다는 점입니다. 하지만 발견의 격차는 좁혀지고 있습니다.
-
Nicholas Carlini, “Black-hat LLMs,” [un]prompted AI 보안 컨퍼런스, 2026년 4월. 컨퍼런스 아젠다. Carlini는 Claude Opus 4.6을 사용해 Linux 커널, Firefox, Ghost CMS, FFmpeg에서 자동 취약점 발견을 시연했습니다. ↩↩
-
Michael Lynch, “Claude Code Found a Linux Vulnerability Hidden for 23 Years.” 2026년 4월. Carlini의 [un]prompted 발표를 상세히 정리한 글로, NFSv4 힙 버퍼 오버플로의 기술적 세부, 모델 세대 비교, 검증 병목을 포함합니다. ↩↩↩↩↩↩↩
-
“AI Finds Vulns You Can’t,” Security Cryptography Whatever 팟캐스트, Nicholas Carlini 출연, 2026년 3월. 방법론 세부사항의 주 출처로, 10줄짜리 bash 스크립트, Docker/ASAN 셋업, 대상당 여러 패스, 122개 Firefox 크래시 입력(22개 CVE), 검증을 위한 자동 비평 에이전트를 다룹니다. ↩↩↩↩↩↩
-
Hacker News 토론. 409점. 핵심 관찰: 취약점 연구는 근본적으로 알려진 클래스에 대한 패턴 매칭이며, 이는 LLM의 강점과 맞물립니다. ↩