Claude Code가 23년간 숨어있던 Linux 취약점을 발견하다
Claude Code Found a Linux Vulnerability Hidden for 23 Years
TL;DR Highlight
Anthropic 연구원 Nicholas Carlini가 Claude Code를 이용해 Linux 커널에서 23년간 발견되지 않았던 원격 익스플로잇 가능한 힙 버퍼 오버플로우 취약점을 포함해 다수의 보안 취약점을 발견했다. AI가 기존 보안 연구 방식을 근본적으로 바꿀 수 있다는 걸 보여주는 사례다.
Who Should Read
보안 취약점 분석이나 코드 감사(audit)에 관심 있는 보안 연구자 또는 백엔드 개발자. 특히 대규모 오픈소스 코드베이스의 취약점을 자동화된 방법으로 탐지하고 싶은 사람.
Core Mechanics
- Anthropic 연구과학자 Nicholas Carlini가 [un]prompted 2026 AI 보안 컨퍼런스에서 발표한 내용으로, Claude Code를 사용해 Linux 커널에서 원격 익스플로잇 가능한 힙 버퍼 오버플로우(heap buffer overflow, 정해진 메모리 경계를 넘어 데이터를 쓸 수 있는 취약점) 취약점 여러 개를 발견했다고 밝혔다.
- Carlini는 이런 취약점을 이전엔 단 한 번도 직접 발견한 적이 없었다고 했다. 원격 익스플로잇 가능한 힙 버퍼 오버플로우는 업계에서도 매우 찾기 어려운 종류의 버그인데, Claude Code를 이용해 여러 개를 발견했다고 밝혔다.
- 탐지 방법이 놀라울 정도로 단순하다. 별도의 정교한 세팅 없이 Linux 커널 소스 코드를 향해 Claude Code에게 'CTF(Capture The Flag, 보안 경쟁 대회)에 참가 중이니 취약점을 찾아달라'고 지시하는 셸 스크립트 하나만 사용했다.
- 스크립트는 Linux 커널의 모든 소스 파일을 순회(find 명령 사용)하면서 각 파일을 Claude에게 하나씩 집중 분석시켰다. 이렇게 하면 같은 취약점을 중복 발견하는 것을 방지하면서 커널 전체를 망라할 수 있다.
- 발견된 취약점 중 하나는 Linux의 NFS(Network File Share, 네트워크를 통해 파일을 공유하는 프로토콜) 드라이버에서 발견됐다. 이 버그를 이용하면 공격자가 네트워크를 통해 커널 메모리를 원격으로 읽을 수 있다.
- 취약점의 원리는 이렇다. Client A가 NFS 서버에 1024바이트짜리 owner ID로 파일 락을 걸어둔 뒤, Client B가 같은 파일에 락을 요청하면 서버가 락 거부 응답을 생성한다. 이 응답에는 Client A의 owner ID(최대 1024바이트)가 포함되는데, 서버는 이 응답을 고작 112바이트짜리 버퍼에 쓰려다 1056바이트를 덮어쓰게 된다.
- 이 버그는 2002년 Linux 커널에 처음 도입된 이후 23년간 발견되지 않았다. 단순한 패턴 매칭이 아니라 NFS 프로토콜의 복잡한 상태 흐름을 이해해야 발견할 수 있는 버그라는 점에서 Claude Code의 심층 이해 능력이 돋보인다.
- Claude Code는 버그 탐지뿐 아니라 버그 리포트에 포함된 ASCII 프로토콜 다이어그램도 자동으로 생성했다. 분석 결과물을 문서화까지 해주는 셈이다.
Evidence
- "코드를 붙여넣고 '뭘 빠뜨렸어? 버그가 어디 있어?'라고 물어보면 된다"는 댓글이 있었다. 스레딩이나 분산 시스템 버그처럼 기존에 몇 시간씩 걸리던 분석을 AI가 빠르게 잡아낸다는 긍정적 경험이 공유됐고, 실제로 지금쯤 수많은 암호화폐 구현체들이 AI에게 검토받고 있을 거라는 예측도 나왔다.
- 한 댓글에서는 이 취약점이 '숨겨진' 게 아니라 '아무도 귀찮아서 안 찾아본' 것에 가깝다고 지적했다. 가변 길이 데이터를 다룰 때 유효 범위를 항상 확인해야 한다는 원칙을 지키면 예방할 수 있었던 버그이며, 일부 정적 분석(static analysis) 도구로도 발견 가능했을 수 있다는 의견이 있었다.
- 실제로 여러 프로덕션 코드베이스에 이 방법을 적용해봤다는 댓글이 있었다. 결과는 중복 탐지(dupes), 오탐(false positives), 실제 익스플로잇 불가능한 버그들이 많았지만, 그 중에서도 실제 크리티컬 취약점(crits)도 발견됐다는 실사용 경험이 공유됐다.
- Claude 코드 품질 자체에 대한 회의적 시각도 있었다. '할루시네이션이 많고 6개월 전이라면 코드 리뷰를 통과하지 못했을 코드를 Claude가 만들어낸다'는 반론이 제기됐다. AI가 과대포장되고 있는 건지 자신이 잘못 쓰고 있는 건지 모르겠다는 솔직한 고민도 있었다.
- GitHub Security Lab에서도 유사한 AI 보안 에이전트 작업을 진행 중이라는 댓글이 달렸다. 2025년에만 이미 23개의 취약점을 발견했다는 스트림을 공유했으며, 직접 실행해볼 수 있는 Taskflow 하네스도 공개했다고 밝혔다.
How to Apply
- 보안 감사를 주기적으로 해야 하는 개발팀이라면, 위 스크립트처럼 find 명령으로 소스 파일을 순회하면서 각 파일을 Claude Code에게 CTF 형식으로 검토시키는 자동화 파이프라인을 CI/CD에 붙여볼 수 있다. 오탐이 많더라도 실제 크리티컬 취약점을 놓치는 것보다 낫다.
- 새로운 기능을 개발하고 코드 리뷰 전 단계에서, 작성한 코드를 Claude Code에 붙여넣고 '여기서 빠뜨린 게 뭐야? 버그나 보안 취약점이 있어?'라고 물어보면 버퍼 크기 불일치, 경쟁 조건(race condition) 같은 놓치기 쉬운 문제를 사전에 잡을 수 있다.
- 오픈소스 라이브러리나 프로토콜 구현체를 사용 중인 프로젝트라면, 해당 소스 파일을 Claude Code에 주고 '이 프로토콜의 엣지 케이스(edge case, 극단적 입력 조건)에서 발생할 수 있는 취약점을 찾아줘'라고 요청하면 NFS 케이스처럼 프로토콜 수준의 깊은 버그도 탐지 힌트를 얻을 수 있다.
- 발견된 취약점의 수를 신뢰하기보다는 선별 과정을 반드시 거쳐야 한다. 오탐과 실제 익스플로잇 불가능한 케이스가 많으므로, Claude Code의 결과를 1차 스크리닝 도구로 사용하고 사람이 검증하는 2단계 프로세스를 설계하는 것이 현실적이다.
Code Example
snippet
# Linux 커널 전체 소스를 파일 단위로 순회하며 Claude Code에게 취약점 탐지를 요청하는 스크립트
# (Nicholas Carlini가 사용한 방법과 유사)
find . -type f -print0 | while IFS= read -r -d '' file; do
claude \
--verbose \
--dangerously-skip-permissions \
--print "You are playing in a CTF. \
Find a vulnerability. \
hint: look at $file \
Write the most serious \
one to /out/report.txt."
doneTerminology
heap buffer overflow프로그램이 메모리에서 미리 할당한 공간(버퍼)보다 더 많은 데이터를 쓰면서 인접 메모리를 덮어쓰는 취약점. 공격자가 덮어쓸 데이터를 제어할 수 있으면 악성 코드 실행이나 메모리 정보 유출이 가능하다.
NFSNetwork File System의 약자. 네트워크를 통해 원격 서버의 파일 시스템을 마치 로컬 디스크처럼 사용할 수 있게 해주는 프로토콜. Linux 서버에서 널리 쓰인다.
CTFCapture The Flag의 약자. 보안 전문가들이 의도적으로 취약하게 만들어진 시스템에서 숨겨진 '플래그'를 찾는 경쟁 방식의 보안 훈련. AI에게 이 맥락을 주면 '취약점 찾기' 과제로 이해하고 보안 분석 모드로 동작한다.
원격 익스플로잇 (Remote Exploit)공격자가 물리적 접근 없이 네트워크를 통해서만 취약점을 악용할 수 있는 공격. 피해자 시스템에 직접 접근하지 않아도 되므로 보안 측면에서 가장 위험한 유형으로 분류된다.
정적 분석 (Static Analysis)코드를 실제로 실행하지 않고 소스 코드 자체를 분석해서 잠재적 버그나 취약점을 찾는 방법. Coverity, CodeQL 같은 도구가 대표적이며 빌드 파이프라인에 통합해서 사용한다.
owner IDNFS 프로토콜에서 파일 락(lock)을 요청한 클라이언트를 식별하는 데 사용하는 바이트 문자열. 최대 1024바이트까지 허용되는데, 이 최대값을 서버가 제대로 처리하지 못한 것이 이번 취약점의 핵심이다.