TL;DR
Anthropic이 실수로 Claude Code npm 패키지에 .map 파일을 포함해 CLI 도구의 전체 소스 코드를 노출했습니다. 이 유출은 가짜 도구 주입을 통한 증류 방지, 불만 감지 정규식 엔진, 오픈 소스 커밋에서 AI 저작권을 숨기는 "언더커버 모드", 그리고 KAIROS라는 미출시 자율 에이전트 모드까지 드러냈습니다. API 개발자라면 AI 코딩 도구의 내부 작동 방식을 반드시 이해해야 합니다.
소개
2026년 3월 31일, 보안 연구원 Chaofan Shou가 Anthropic이 Claude Code npm 패키지에 소스 맵 파일(.map)을 포함해 배포한 사실을 발견했습니다. 소스 맵은 축소된 프로덕션 코드를 사람이 읽을 수 있는 코드로 다시 매핑하는 디버그 파일로, 배포 전 반드시 제거해야 합니다.
그러나 Claude Code 패키지엔 실제로 .map 파일이 포함되어 있었고, 이를 다운로드한 모든 사용자는 주석, 내부 코드명, 아키텍처 세부 정보까지 완전한 소스 코드를 확인할 수 있었습니다.
이 사건은 해커 뉴스 1위를 기록했고, Reddit, Twitter, 개발자 포럼 등으로 빠르게 확산되었습니다. Anthropic은 패키지를 삭제했지만 소스는 이미 미러링되어 분석되고 있습니다.
💡 Claude Code, Cursor, GitHub Copilot, 또는 Apidog의 API 개발 플랫폼을 사용하든, 이번 유출은 AI 코딩 도구의 내부 기술을 직접 관찰할 수 있는 드문 기회입니다. 내부 구조를 이해하면 신뢰할 수 있는 도구를 선택할 때 더 나은 판단을 할 수 있습니다. 투명하고 종속성 없는 API 개발을 위해 Apidog을 무료로 사용해 보세요.
이 문서는 주요 기술적 발견 사항을 중심으로, AI 코딩 도구를 사용하는 개발자에게 실제로 어떤 의미가 있는지 실용적으로 분석합니다.
소스 코드가 유출된 방식
근본 원인: Bun 빌드 도구 버그
Claude Code는 대체 JS 런타임 Bun을 기반으로 합니다. 2026년 3월 11일, Bun에 (oven-sh/bun#28001) 소스 맵이 비활성화되는 것이 명시되어 있음에도 프로덕션 빌드에 포함된다는 버그가 보고되었습니다.
Anthropic의 빌드 파이프라인이 이 버그를 그대로 트리거했고, npm에 게시된 패키지에 .map 파일이 그대로 포함됐습니다. npm pack @anthropic-ai/claude-code 명령이나 패키지의 파일을 열어보면 완전한 소스가 노출되는 구조였습니다.
아이러니하게도, Anthropic의 자체 도구 체인에 포함된 Bun 런타임의 버그로 인해 보안사고가 발생한 셈입니다.
노출된 내용
유출된 정보는 아래와 같습니다.
- 전체 TypeScript 소스
- 내부 주석 및 설계 결정
- 기능 플래그, 실험적 구성
- 시스템 프롬프트 템플릿 및 안전 메커니즘
- 미출시 기능의 코드명
- 성능 최적화 및 메트릭
부분적인 유출이 아니라, 완전히 보존된 프로덕션 코드베이스입니다.
증류 방지: 모델 도난 대응
가짜 도구 주입
Claude Code의 증류 방지 시스템은 claude.ts (301–313행)에서 ANTI_DISTILLATION_CC 플래그가 활성화되면, API 요청에 anti_distillation: ['fake_tools'] 필드를 추가합니다.
이 필드는 Anthropic 서버가 시스템 프롬프트에 "가짜 도구" 정의를 주입하도록 하여, 경쟁사가 API 트래픽을 수집해 모델을 미세조정할 경우 허위 데이터가 학습되게 만듭니다.
예시: 요청 생성 코드
if (ANTI_DISTILLATION_CC) {
apiRequest.anti_distillation = ['fake_tools'];
}
프록시 서비스가 Claude API 트래픽을 수집해 자체 모델을 튜닝하려 해도, 가짜 도구 때문에 신뢰할 수 없는 데이터가 학습됩니다.
커넥터 텍스트 요약
betas.ts (279–298행)에서는 대화 중 어시스턴트 텍스트를 요약한 후 암호화 서명과 함께 반환합니다. 이후 대화에서는 원본 텍스트가 아닌 요약만이 노출되어, API 트래픽 감청을 통한 역엔지니어링이 더 어려워집니다.
우회 방법
- 프록시가
anti_distillation필드를 제거할 수 있습니다. - 환경 변수
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS로 증류 방지 비활성화가 가능합니다. - 패시브 트래픽 캡처에만 유효합니다.
즉, 완벽한 방어가 아니라 자동화된 증류의 비용과 난이도를 높이는 목적입니다.
언더커버 모드: AI 저작권 숨기기
언더커버 모드 기능
undercover.ts에는 Claude Code가 Anthropic이 아닌 저장소에서 동작할 때, 다음을 차단하는 로직이 있습니다.
- 내부 코드명("Capybara", "Tengu") 언급 차단
- 내부 Slack 채널/저장소명 차단
- "Claude Code"라는 이름의 출력 차단
주석에는 "강제-OFF 없음. 모델 코드명 유출 방지."라고 명시되어 있습니다.
오픈소스 기여시 영향
Anthropic 직원이 오픈 소스 프로젝트에 Claude Code를 사용할 때, AI 개입 증거가 출력에서 사라집니다. 이는 AI 코드 기여의 투명성에 영향을 줍니다.
실제 목적은 내부 코드명 유출 방지지만, 결과적으로 AI 사용 흔적도 숨겨집니다.
정규식을 통한 불만 감지
작동 방식
userPromptKeywords.ts에서 정규식 기반 패턴 매칭으로 사용자 불만(욕설/감정 표현 등)을 감지합니다.
const complaintRegex = /짜증|화남|불만|.../;
if (complaintRegex.test(userInput)) {
// 불만 감지 로직
}
실용성
LLM 추론 대신 정규식 기반 감지가 빠르고 비용이 적게 듭니다. 모든 입력마다 LLM 감정 분석을 실행하는 것보다 효율적입니다.
네이티브 클라이언트 증명
암호화된 요청 검증
system.ts (59–95행)에서는 API 요청에 cch=554eb 자리 표시자를 삽입하고, Bun 네이티브 HTTP 스택이 이를 해시로 대체해 전송합니다. 서버는 이 해시를 검증하여 요청이 실제 Claude Code 바이너리에서 왔는지 확인합니다.
이 증명 시스템은 무단 포크, 래퍼, 프록시 등을 차단하는 용도로 사용됩니다.
컴파일 타임 플래그
컴파일 타임 플래그 및 GrowthBook 킬 스위치로 활성/비활성화가 가능합니다. 필요에 따라 제한 수준을 조정할 수 있습니다.
API 개발자는 SaaS 도구가 어떻게 클라이언트 인증을 프로토콜 수준에서 강제하는지 참고할 수 있습니다.
KAIROS: 미출시 자율 에이전트 모드
코드상 발견 내용
소스 전반에 걸쳐 "KAIROS"라는 미출시 기능 플래그가 존재합니다.
-
/dream스킬: 야간 메모리 증류 - 추가 전용 로깅
- GitHub 웹훅 구독
- 5분 크론 간격 데몬 워커
의미
KAIROS는 저장소를 모니터링하며 자율적으로 작업을 수행하는 백그라운드 에이전트입니다. 이는 GitHub Copilot Agent, Cursor의 백그라운드 처리 등 현재 AI 코딩 시장의 트렌드와 일치합니다.
API 개발팀 입장에선 에이전트가 코드 변경을 감지/수정할 때 OpenAPI 스펙, 테스트, 문서 등이 자동 동기화되어야 하며, Apidog과 같은 통합 툴이 이를 지원합니다.
노출된 성능 최적화
터미널 렌더링: 게임 엔진 기술 도입
ink/screen.ts, ink/optimizer.ts에선 게임 엔진 수준의 최적화가 적용되어 있습니다.
-
Int32Array기반 문자 풀 - 토큰 스트리밍 중 문자 폭 계산 최적화(약 50배 속도)
CLI 도구임에도 렌더링 계층이 매우 고도화되어 있습니다.
프롬프트 캐시
promptCacheBreakDetection.ts는 14개의 별도 캐시 무효화 벡터를 추적합니다. 캐시 무효화가 실행될 때마다 전체 프롬프트 재처리가 발생하므로, 이를 최소화해 인프라 비용을 절감합니다.
자동 압축 실패 연쇄 반응
autoCompact.ts (68–70행) 주석에서, "1,279개 세션에서 50회 연속 실패, 하루 25만 건의 API 호출 낭비"와 같은 실제 운영 문제를 드러냅니다.
단일 세션 연속 실패 제한을 3회로 줄이는 코드 한 줄이 대규모 리소스 낭비 문제를 해결했습니다.
보안 강화 세부 정보
Bash 보안: 23가지 검사
bashSecurity.ts엔 23가지 번호 매겨진 보안 검사가 구현되어 있습니다.
- Zsh 내장 기능 악용 차단
- 유니코드 제로 너비 공간 주입 방지
- IFS 널 바이트 주입 방지
- HackerOne 보안 리뷰 기반 추가 보호
다른 AI 코딩 CLI와 달리, 명령 실행 계층 보안에 매우 신경 썼음을 알 수 있습니다.
API 개발자가 얻어야 할 점
1. AI 코딩 도구의 내부 동작 원리 파악
Claude Code 유출은 증류 방지, 불만 감지, 언더커버 모드, 클라이언트 증명 등 의외의 내부 기능을 공개했습니다. 타 도구도 비공개 내부 메커니즘이 있을 수 있습니다.
- 어떤 데이터가 수집/전송되는지?
- AI 개입이 숨겨지는지?
- 서버와의 통신 방식은?
이 점을 항상 확인하세요.
2. 빌드 툴체인의 보안성 검증
Bun 빌드 버그로 유출이 발생했고, 같은 날 Axios도 계정 탈취로 피해를 입었습니다.
- 빌드 파이프라인 종속성을 철저히 감사하세요.
- CI/CD에서 소스 맵,
.env, 내부 설정이 노출되지 않도록 하세요. - 통합 개발 플랫폼으로 외부 종속성 최소화.
3. AI 코딩 도구의 자율 작동 대비
KAIROS, Copilot Agent 등은 저장소를 감시하고, 자율적으로 코드/문서를 갱신합니다. API 라이프사이클을 단일 플랫폼에서 관리해 테스트, 문서, 스펙이 항상 동기화되게 하세요.
4. 소스 코드 투명성의 중요성
공개된 오픈 소스 도구는 이런 유출 리스크가 없습니다. 내부 구조 검증이 가능한 도구를 선호할지, 공급업체를 신뢰할지 선택 기준을 명확히 하세요.
FAQ
소스 유출 후 Claude Code는 안전한가요?
네. 유출은 사용자 데이터가 아니라 소스 코드입니다. .map 파일은 이미 패키지에서 제거됐고, 보안 취약점이 아니라 아키텍처 결정 문제입니다.
Claude Code의 "언더커버 모드"란?
Anthropic이 아닌 저장소에서 내부 코드명 및 "Claude Code" 표현을 자동으로 차단하는 기능입니다. 오픈 소스 기여 시 AI 개입 흔적이 노출되지 않습니다.
Claude Code의 가짜 도구란?
증류 방지 활성화 시, 서버가 시스템 프롬프트에 허위(미끼) 도구를 주입합니다. 경쟁자가 API 트래픽으로 Claude 동작을 복제하지 못하게 만듭니다.
Claude Code의 KAIROS란?
미출시 자율 에이전트 모드입니다. 백그라운드 데몬, GitHub 웹훅, /dream 스킬 등 저장소를 지속적으로 감시하고 작업을 수행하는 기능이 포함되어 있습니다.
Claude Code 소스 코드는 어떻게 유출됐나요?
Bun 런타임 버그로 소스 맵이 프로덕션 빌드에 포함됐기 때문입니다. npm 패키지에 .map 파일이 포함되어 전체 소스가 노출됐습니다.
이 유출이 Claude API 사용자에게 영향이 있나요?
아니요. 유출은 CLI 도구 소스 코드에 국한됩니다. API 키, 사용자 데이터, 모델 가중치는 관련 없습니다.
내 AI 코딩 도구의 불만 감지, 걱정해야 할까요?
정규식 기반 감정 감지이며, LLM 기반보다 빠르고 저렴합니다. 데이터는 주로 제품 개선에 사용되는 것으로 보입니다. 직접 도구 소스를 검증할 수 없는 경우, 유사한 기능이 있을 수 있습니다.
Axios npm 공격과 관련 있나요?
같은 날(2026년 3월 31일) 발생했으나, 별개 사건입니다. Axios는 공급망 해킹, Claude Code는 빌드 버그로 인한 유출입니다.
주요 시사점
- Claude Code 소스는 Bun 빌드 도구 버그로 유출됨
- 증류 방지: 가짜 도구 주입, 추론 요약
- 언더커버 모드: 오픈 소스 저장소에서 AI 개입 숨김
- 불만 감지: 정규식 기반, LLM 미사용
- KAIROS: 미출시 자율 에이전트 모드
- 클라이언트 증명: 요청 출처 암호학적 확인
- API 개발 워크플로에서 투명하고 검증 가능한 도구의 중요성 부각
AI 코딩 도구의 내부 아키텍처를 이해하면 보안, 신뢰, 워크플로 설계에서 더 나은 선택을 할 수 있습니다. API 팀은 개발 도구가 보안 표면 일부임을 인식하고, 인간/AI 모두의 변경에 일관성 있게 대응할 수 있는 워크플로를 구축해야 합니다.
Top comments (0)