Claude Code 유출 코드, 5가지 숫자로 직접 확인했습니다

Published on

in

Claude Code 유출 코드, 5가지 숫자로 직접 확인했습니다

2026.03.31 기준
Claude Code v2.1.88
보안 주의

Claude Code 유출 코드,
5가지 숫자로 직접 확인했습니다

npm 패키지 설정 파일 한 줄의 실수로 512,000줄이 통째로 풀렸습니다. Anthropic이 공개 성명을 냈고, 유출 코드 안에서 발견된 미공개 기능 5가지와 실제 보안 위험까지 공식 자료를 직접 뒤졌습니다.

512,000
노출 코드 줄 수
41,500+
GitHub 포크 수
44개
숨겨진 피처 플래그
$2.5B
Claude Code 연매출(ARR)

어떻게 512,000줄이 통째로 풀렸나

2026년 3월 31일 오전 4시(UTC) 기준, Claude Code v2.1.88이 npm에 배포됐습니다. 그런데 이 패키지 안에 소스맵(.map) 파일이 그대로 포함돼 있었습니다. 소스맵은 압축된 프로덕션 코드를 원본 소스와 연결해주는 디버깅용 파일입니다. 개발자가 쓰는 내부 도구일 뿐, 절대 외부로 나가면 안 됩니다.

💡 소스맵이 포함된 것만도 문제인데, 더 아찔한 건 그 소스맵이 Anthropic의 Cloudflare R2 스토리지 버킷 URL을 그대로 참조하고 있었다는 점입니다. 인증 없이 누구나 접속 가능한 퍼블릭 버킷이었습니다.

유출 경로를 그대로 따라가 보면 이렇습니다. npm install @anthropic-ai/claude-code를 실행하면 59.8MB짜리 main.js.map이 내려옵니다. 이 파일을 열면 Anthropic R2 버킷의 src.zip 주소가 나옵니다. 그 ZIP을 내려받으면 1,906개 TypeScript 파일에 512,000줄의 원본 코드가 나옵니다. 세 단계면 충분했습니다.

원인은 두 가지가 겹쳤습니다. 첫째, .npmignore*.map을 누락한 패키징 설정 실수. 둘째, Claude Code의 런타임인 Bun의 알려진 버그(GitHub Issue #28001, 2026.03.11 보고)로 프로덕션 빌드에서도 소스맵이 생성됐습니다. Anthropic이 Bun을 직접 인수해서 관리하고 있는데, 20일간 미해결 상태로 방치된 자체 런타임 버그가 결정타가 됐습니다.

보안 연구자 Chaofan Shou(@Fried_rice)가 오전 4시 23분에 발견하고 X(트위터)에 직접 다운로드 링크와 함께 공개했습니다. 1,600만 조회수를 기록했고, 2시간 안에 GitHub에서 50,000개 스타를 받은 리포지터리가 생겼습니다. 공식 DMCA 삭제 요청이 들어갔지만, 이미 41,500개 이상 포크된 상태였고, 탈중앙화 미러에는 지금도 남아 있습니다.

(출처: The Register, 2026.03.31 / dev.to Gabriel Anhaia 분석, 2026.03.31)

▲ 목차로 돌아가기

Anthropic 공식 성명 전문 해석

Anthropic은 The Register에 공식 이메일 성명을 냈습니다. 원문은 이렇습니다.

“Earlier today, a Claude Code release included some internal source code. This was a release packaging issue caused by human error, not a security breach. We’re rolling out measures to prevent this from happening again.”
(출처: The Register, 2026.03.31)

성명의 핵심 포인트 세 가지가 있습니다. 인간 실수(human error)라고 못 박은 것, 보안 침해가 아니다(not a security breach)라고 선을 그은 것, 그리고 고객 데이터나 자격증명은 노출되지 않았다고 밝힌 것입니다. 고객 데이터 무관 여부는 사실입니다. 노출된 것은 Claude Code 도구 자체의 소스코드이지, 사용자 대화 내용이나 API 키가 아닙니다.

💡 공식 성명과 실제 기술 결과를 같이 놓고 보면 한 가지가 눈에 띕니다. “보안 침해가 아니다”는 말은 외부 공격이 없었다는 뜻이지, 정보가 공개되지 않았다는 뜻이 아닙니다. 512,000줄은 지금도 인터넷 어딘가에 있습니다.

같은 날 Anthropic이 사용자들에게 사용량 제한이 “예상보다 훨씬 빠르게 소진된다”고 별도 공지를 내놓은 것도 눈에 띕니다. 앞서 발견된 –resume 캐시 버그(v2.1.69부터 존재, Reddit 2026.03.30 보고)로 API 비용이 최대 10~20배 올라간 것과 시점이 겹칩니다. 한 날에 두 건의 이슈가 동시에 터진 셈입니다.

▲ 목차로 돌아가기

유출 코드에서 꺼낸 미공개 기능 5가지

512,000줄 안에는 출시되지 않은 기능들이 명백히 구현된 형태로 들어 있었습니다. 아래는 공개된 분석들에서 공통적으로 등장한 5가지입니다.

1

KAIROS — 자는 동안 코드베이스를 정리하는 데몬

소스 내 150회 이상 언급된 백그라운드 에이전트입니다. 유휴 상태에서 autoDream 프로세스를 실행해 메모리 파일들을 야간에 통합 정리하고, 논리 모순을 제거하며, 막연한 인사이트를 검증된 사실로 변환하는 작업을 합니다. 쉽게 말해 Claude Code가 밤새 혼자 프로젝트를 복습하고 정리해두는 기능입니다.

2

ULTRAPLAN — 최대 30분짜리 원격 플래닝 세션

복잡한 계획 작업을 클라우드 컨테이너에서 Opus 모델이 30분 동안 처리하게 맡기는 기능입니다. 처리가 끝나면 승인 알림이 오고, 로컬 터미널로 결과를 가져올 때 __ULTRAPLAN_TELEPORT_LOCAL__ 센티넬 값을 씁니다. 로컬에서는 무거운 추론을 할 수 없는 상황에서 클라우드 파워를 빌리는 구조입니다.

3

BUDDY — 터미널 속 다마고치 (그리고 오늘 출시됐습니다)

buddy/companion.ts에 18종의 생명체(덕, 드래곤, 악솔로틀, 카피바라, 버섯, 유령 등)를 가진 터미널 반려동물이 구현돼 있었습니다. 유출 코드의 롤아웃 일정이 4월 1~7일로 명시돼 있었고, 실제로 오늘(2026.04.01) 공식 Changelog v2.1.89에 /buddy 명령어가 정식 추가됐습니다.

생명체 종류는 사용자 ID 해시를 Mulberry32 PRNG + 'friend-2026-401' 솔트로 결정해서, 같은 계정은 항상 같은 동물이 나옵니다.

(출처: Claude Code 공식 Changelog v2.1.89, 2026.04.01)

4

Coordinator Mode — 여러 Claude가 동시에 일하는 구조

하나의 Claude가 여러 하위 Claude 에이전트를 생성해 병렬 작업을 분배하고 결과를 취합하는 멀티에이전트 오케스트레이션 기능입니다. 현재 에이전트 팀(Agent Teams) 기능의 확장 형태로 보이며, 에이전트 간 충돌 해결 로직도 포함돼 있습니다.

5

Anti-Distillation — 경쟁사 학습 데이터를 오염시키는 장치

claude.ts 301~313번째 줄에 있는 ANTI_DISTILLATION_CC 플래그가 활성화되면, API 요청에 가짜 도구 정의(fake_tools)를 섞어 보냅니다. 경쟁사가 API 트래픽을 수집해 자사 모델을 훈련시키려 할 때 그 데이터를 오염시키는 의도입니다. 보안 연구자 Alex Kim은 이 방어 장치를 진지한 경쟁사라면 한 시간 안에 우회할 것이라고 지적했습니다. 실질 보호는 기술보다 법적 위협에 있다는 분석입니다.

▲ 목차로 돌아가기

같은 날 터진 axios RAT — 진짜 위험한 쪽

소스코드 유출과 아무 관련 없이, 같은 날 새벽(2026.03.31 UTC 00:21) npm에 악성 axios 버전이 두 개 올라왔습니다. axios@1.14.1axios@0.30.4가 그것입니다. 두 버전 모두 plain-crypto-js라는 의존성을 통해 원격 접속 트로이목마(RAT)를 심습니다.

⚠️ 반드시 확인하세요

2026년 3월 31일 UTC 00:21 ~ 03:29 사이에 npm install이나 Claude Code를 업데이트했다면, 아래 명령어로 즉시 확인하세요:

grep -r "1.14.1\|0.30.4\|plain-crypto-js" package-lock.json

해당 버전이 발견되면 해당 머신을 완전히 손상된 것으로 간주하고 모든 API 키와 자격증명을 즉시 교체해야 합니다. 운영체제 재설치도 권장됩니다. 소스코드 유출 자체는 개인 정보와 무관하지만, 이 axios RAT는 실질적인 보안 위협입니다.

Anthropic은 유출 이후 네이티브 인스톨러를 공식 권장 설치 방식으로 전환했습니다. npm 의존성 체인을 거치지 않는 독립 바이너리 방식입니다.

curl -fsSL https://claude.ai/install.sh | bash

(출처: dev.to, The Great Claude Code Leak of 2026, 2026.03.31)

▲ 목차로 돌아가기

지금 당장 해야 할 조치 체크리스트

현재 Claude Code를 사용 중이라면 다음 순서로 확인하는 게 맞습니다.

확인 항목 권장 조치 우선순위
axios 버전 확인 grep plain-crypto-js package-lock.json 즉시
Claude Code 버전 업데이트 v2.1.89 이상 (2026.04.01 릴리스) 오늘
설치 방식 전환 npm 대신 네이티브 인스톨러 사용 권장
–resume 사용 주의 v2.1.89 캐시 버그 수정 여부 확인 후 사용 모니터링
npm 배포 중인 팀 npm pack --dry-run으로 발행 파일 검토 즉시 점검

💡 v2.1.89 공식 Changelog에는 StructuredOutput 스키마 캐시 버그, LRU 캐시 키 메모리 누수, -p --resume 데드락 등 40여 건의 수정이 포함됐습니다. 업데이트만으로도 비용 관련 버그 여러 개가 함께 해결됩니다. (출처: code.claude.com/docs/en/changelog, 2026.04.01)

▲ 목차로 돌아가기

유출이 Claude Code 사용자에게 의미하는 것

소스코드 유출이라는 단어가 주는 무게감과 달리, 이 사건이 일반 Claude Code 사용자에게 직접적인 위협이 되는 부분은 생각보다 좁습니다. 노출된 건 Anthropic의 내부 도구 코드이지, 사용자 데이터가 아닙니다. 개인 정보나 API 키 유출은 없었다는 Anthropic 성명은 사실로 보입니다.

💡 공식 발표문과 실제 기술 결과를 같이 놓고 보니 이런 차이가 보였습니다 — “보안 침해 아님”은 공격자가 없었다는 뜻이고, “소스코드는 영구히 인터넷에 남았다”는 별개의 사실입니다. 두 문장은 동시에 참입니다.

솔직히 말하면, 이번 유출로 드러난 Claude Code 내부 아키텍처는 인상적입니다. 기본 도구 시스템만 29,000줄이고, Query Engine이 46,000줄입니다. 쿼리에 응답하는 래퍼 수준이 아니라, 파일 수정·셸 실행·멀티에이전트 조율을 갖춘 풀스택 에이전트 하네스가 맞습니다. 경쟁사들이 이 코드를 학습 자료로 쓸 수 있게 된 건 Anthropic에게 실질적인 전략적 손해입니다.

한편 KAIROS·ULTRAPLAN이 조만간 정식 출시될 가능성도 높아졌습니다. 유출로 이미 알려진 이상 숨길 이유가 없기 때문입니다. 실제로 BUDDY는 유출 이틀 만에 v2.1.89에서 공식 배포됐습니다. 나머지 기능들도 예정보다 빠르게 나올 수 있다는 신호입니다.

다만 한 가지는 명확히 짚어야 합니다. 같은 날 동시에 터진 axios RAT 공격과 –resume 캐시 버그는 유출과는 별개 문제입니다. 유출 기사들이 쏟아지는 사이에 이 두 가지를 놓친 팀들이 더 실질적인 피해를 봤을 수 있습니다. 소란스러운 날일수록 조용한 위협을 먼저 체크하는 게 맞습니다.

▲ 목차로 돌아가기

자주 묻는 질문 Q&A

Q1. 이번 유출로 내 대화 내용이나 API 키가 노출됐나요?

아닙니다. 노출된 것은 Claude Code 도구 자체의 내부 소스코드입니다. 사용자 대화, API 키, 자격증명은 포함되지 않았습니다. Anthropic 공식 성명에도 “고객 데이터나 자격증명은 관여되지 않았다”고 명시돼 있습니다. (출처: The Register, 2026.03.31)

Q2. 지금 Claude Code를 계속 써도 되나요?

네. 단, v2.1.89 이상으로 업데이트하고, npm 대신 네이티브 인스톨러(claude.ai/install.sh)를 쓰는 게 좋습니다. 2026.04.01 현재 Anthropic이 권장하는 설치 방식이 네이티브 인스톨러로 바뀐 상태입니다.

Q3. KAIROS나 ULTRAPLAN은 언제 출시되나요?

Anthropic이 공식 일정을 밝히지 않은 부분입니다. 다만 BUDDY가 유출 이틀 만에 v2.1.89에서 정식 배포된 것을 보면, 나머지 기능들도 예정보다 앞당겨 공개될 가능성이 있습니다.

Q4. axios RAT는 Claude Code 사용자에게만 해당하나요?

아닙니다. 2026.03.31 UTC 00:21 ~ 03:29 사이에 npm에서 axios@1.14.1 또는 axios@0.30.4를 설치한 모든 프로젝트가 대상입니다. Claude Code와 관계없이 npm을 쓴다면 확인이 필요합니다.

Q5. .npmignore 실수 하나가 왜 이렇게 큰 사고가 됐나요?

.npmignore에 *.map을 빠뜨린 것에, Bun 런타임 버그(프로덕션 빌드에서도 소스맵 생성)와 공개 버킷 설정까지 세 가지 실수가 겹쳤습니다. 개별 실수 하나하나는 작아 보여도, 동시에 쌓이면 512,000줄이 통째로 나가는 경로가 됩니다. npm pack –dry-run 으로 배포 전 발행 파일 목록을 직접 확인하는 습관이 가장 간단한 방어책입니다.

▲ 목차로 돌아가기

마치며 — 사고와 내용물을 분리해서 봐야 합니다

이번 사건을 두 가지로 나눠서 보는 게 맞습니다. 사고 자체는 배포 파이프라인의 삼중 실수입니다. .npmignore 누락, Bun 런타임 버그 방치, 공개 버킷 설정. 어느 하나만 막았어도 512,000줄은 나가지 않았습니다. 앞으로 “npm publish 전 발행 파일 목록 확인”은 Claude Code 팀뿐 아니라 모든 JS 프로젝트의 기본 체크 항목이 됐습니다.

사고 자체와 별개로, 내용물은 흥미롭습니다. KAIROS·ULTRAPLAN·BUDDY 같은 기능들이 이미 완성된 형태로 들어 있다는 건, Claude Code가 단순 코딩 보조를 넘어서 상당히 야심찬 방향으로 개발되고 있다는 증거입니다. 유출된 코드가 영구히 인터넷에 남아 있는 이상, 경쟁사들도 같은 내용을 읽고 있습니다. Anthropic 입장에서 숨기는 것보다 빠르게 출시하는 게 더 나은 전략이 됐습니다.

당장 해야 할 건 간단합니다. axios 버전 확인하고, v2.1.89로 업데이트하고, 가능하면 네이티브 인스톨러로 전환하는 것. 거기서 시작하면 됩니다.

▲ 목차로 돌아가기

본 포스팅 참고 자료

  1. Anthropic 공식 성명 (The Register 보도) — theregister.com
  2. Claude Code 공식 Changelog — code.claude.com/docs/en/changelog
  3. Claude Code 비용 공식 문서 — code.claude.com/docs/ko/costs
  4. Gabriel Anhaia 기술 심층 분석 — dev.to
  5. Reddit — PSA: 캐시 버그 보고 (2026.03.30) — reddit.com/r/ClaudeAI

본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. Claude Code는 정기적인 업데이트를 통해 기능 구조와 비용 정책이 달라질 수 있으며, 본문의 수치와 기능 설명은 2026년 4월 2일 기준 공개된 공식 자료를 바탕으로 작성됐습니다. 유출 코드에 관한 내용은 공개된 분석 자료와 공식 성명에만 근거하며, 해당 코드의 무단 사용·배포를 권장하지 않습니다.

댓글 남기기


최신 글


아이테크 어른경제에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기