TechFeedTechFeed
보안

Claude Code 소스코드 유출 사건 — npm 소스맵 실수로 51만 줄 노출, 공급망 보안까지 흔들렸다

Anthropic이 Claude Code v2.1.88 npm 배포에서 소스맵을 포함시켜 512,000줄 전체 소스코드가 유출됐다. KAIROS 백그라운드 에이전트, Undercover Mode, 44개 피처 플래그 노출, GitHub DMCA 8,100개 레포 대량 삭제 드라마, Axios 공급망 공격 의혹까지 정리한다.

한 줄 요약: Anthropic이 Claude Code v2.1.88을 npm에 배포하면서 디버그용 소스맵 파일(.map)을 함께 올려 51만 2,000줄·1,906개 TypeScript 파일이 그대로 노출됐다. KAIROS 백그라운드 에이전트, Undercover Mode, 44개 피처 플래그까지 내부 아키텍처가 드러났고, GitHub DMCA 대량 테이크다운 드라마와 npm 공급망 공격 의혹이 동시에 터졌다.

이 사건은 단순 유출을 넘어 npm 패키지 배포 보안, 소스맵 관리, DMCA 남용 위험, 공급망 보안이라는 4가지 실무 이슈를 동시에 보여준다. AI 코딩 도구를 쓰는 개발자라면, 남의 사고에서 배울 것이 많다.

※ 이 글은 2026년 4월 기준, Bloomberg·Fortune·The Hacker News·VentureBeat·BleepingComputer 보도를 교차 검증하여 작성됐습니다.

무슨 일이 있었나 — npm 소스맵 패키징 실수의 전말

2026년 3월 31일, 보안 연구자 Chaofan Shou가 npm 레지스트리에 배포된 @anthropic-ai/claude-code v2.1.88 패키지에서 59.8MB 크기의 JavaScript 소스맵 파일(.map)을 발견했다.

소스맵은 민이파이된 JavaScript를 원본 TypeScript 코드에 매핑하는 디버깅 파일이다. Claude Code는 Bun 번들러를 사용하는데, Bun은 기본값으로 소스맵을 생성한다. 이걸 명시적으로 끄지 않으면 빌드 결과물에 포함된다. 즉, 누군가 .npmignore나 빌드 설정에서 소스맵 제외를 빠뜨린 것이다.

Anthropic은 이를 "릴리스 패키징 이슈로 인한 휴먼 에러"라고 규정했다. 보안 침해가 아니라 빌드 파이프라인 설정 실수라는 입장이다. 하지만 결과적으로 51만 2,000줄, 1,906개 TypeScript 파일이 전 세계 개발자에게 노출됐다. 특히 Fortune은 이 사건을 "Mythos 모델 유출에 이은 2번째 보안 실수"라고 보도했다.

항목내용
유출 버전@anthropic-ai/claude-code v2.1.88
유출 경로npm 레지스트리 소스맵(.map) 파일
규모512,000줄 / 1,906 TypeScript 파일 / 59.8MB
발견 시점2026년 3월 31일
원인Bun 번들러 기본 소스맵 생성 + .npmignore 누락
npm 레지스트리에 배포된 Claude Code 패키지 소스맵 파일 발견 스크린샷
Chaofan Shou가 발견한 @anthropic-ai/claude-code v2.1.88의 소스맵 파일 (출처: The Hacker News)

유출된 내부 기능 — KAIROS, Undercover Mode, 44개 피처 플래그

커뮤니티가 소스코드를 분석한 결과, 아직 공개되지 않은 여러 내부 기능이 드러났다.

1. KAIROS — 백그라운드 영속 에이전트

Claude Code가 사용자 입력 없이도 백그라운드에서 주기적으로 에러를 감지하고 수정하거나, 태스크를 자율적으로 실행하는 시스템이다. 이름 자체가 "시간의 신"에서 율 것으로, 문맥 창 제약을 극복하는 자가 치유 메모리 아키텍처와 함께 동작한다.

2. Undercover Mode — 오픈소스 스텔스 기여 모드

시스템 프롬프트에 "공개/오픈소스 레포에서 UNDERCOVER로 운영 중. 커밋 메시지, PR 제목, PR 본문에 Anthropic 내부 정보를 절대 포함하지 마시오"라는 지시가 담겨 있었다. 이는 Anthropic이 자사 AI로 오픈소스 프로젝트에 기여하되, 기여 출처를 숨기는 기능임을 시사한다.

3. 44개 피처 플래그 — 완성됐지만 아직 안 켜진 기능들

커파일된 코드에 false로 코파일되는 44개 피처 플래그가 존재했다. 외부 빌드에서는 비활성화되지만, 코드 자체는 완성된 상태라는 의미다. 이는 Anthropic의 제품 로드맵 전략을 경쟁사에게 그대로 노출한 셀이다.

4. Buddy 시스템 — 다마고치 스타일 동료 펫

결정론적 가차 시스템으로 동작하는 다마고치 스타일의 동료 펫 기능이다. 동물 코드네임(Tengu, Fennec, Capybara) 등 재미있는 네이밍과 함께 Penguin Mode, Dream System 같은 실험적 기능도 포함되어 있었다.

Claude Code 소스코드 내부 아키텍처 구조 다이어그램
Claude Code 내부에서 발견된 주요 기능들 (출처: DEV Community 분석 글 재구성)

GitHub DMCA 대량 테이크다운 — 8,100개 레포 삭제후 철회

유출 직후 Anthropic은 GitHub에 저작권 테이크다운(DMCA) 요청을 보냈다. 문제는 이 요청이 유출된 코드를 포크한 레포만이 아니라 8,100개 레포지토리를 대상으로 실행됐다는 점이다.

TechCrunch 보도에 따르면, Claude Code 헤드인 Boris Cherny는 이 대량 테이크다운이 "실수"라고 인정하고 대부분의 테이크다운 요청을 철회했다. 최종적으로는 실제 유출 코드를 포함한 1개 레포 + 96개 포크만 대상으로 제한됐다.

이 사건은 DMCA 테이크다운의 위험성을 보여준다. 자동화된 대량 DMCA 요청이 무관한 레포를 연쇄적으로 내리는 상황이 발생할 수 있다는 것이다. 오픈소스 커뮤니티에서는 이를 "디지털 무차별 폭격"이라고 비판했다.

시점사건
3월 31일소스맵 포함된 v2.1.88 npm 배포
3월 31일Chaofan Shou 발견 및 공개
4월 1일GitHub DMCA 8,100개 레포 테이크다운 실행
4월 1일Boris Cherny 대량 테이크다운 "실수" 인정, 대부분 철회
4월 1일Anthropic 공식 성명 — "고객 데이터 무관"

npm 공급망 보안 위험 — Axios 트로이목화 의혹

소스코드 유출 자체보다 더 심각한 문제가 동시에 불거졌다. 3월 31일 00:21~03:29 UTC 사이에 npm에서 Claude Code를 설치하거나 업데이트한 사용자는 트로이목화된 Axios HTTP 클라이언트를 함께 설치했을 가능성이 있다.

이 트로이목화된 Axios에는 크로스 플랫폼 원격 액세스 트로이목리(RAT)가 포함되어 있었다. 이는 소스코드 유출과는 별개의 공급망 공격(supply chain attack)이지만, 같은 시간대에 발생해 혼란을 가중시켰다.

⚠️ 영향받을 수 있는 사용자: 2026년 3월 31일 00:21~03:29 UTC 사이에 npm install @anthropic-ai/claude-code 또는 npm update를 실행한 경우, node_modules/axios의 무결성을 확인해야 한다. npm audit를 실행하고, 해당 시간대 설치 로그가 있다면 node_modules를 완전 삭제 후 재설치할 것.

이 사건은 npm 생태계의 구조적 취약점을 다시 한번 드러냈다. 단일 패키지의 의존성 트리가 수십개에 달하고, 그 중 하나만 침해되어도 전체 프로젝트가 위험해진다. 락파일(package-lock.json) 고정, npm audit 주기적 실행, 설치 시간대 기록이 실무에서 얼마나 중요한지 보여주는 사례다.

개발자가 배워야 할 5가지 실무 교훈

이 사건에서 추출할 수 있는 실무 교훈은 명확하다.

1. 소스맵을 반드시 배포에서 제외해라

Bun, Webpack, esbuild 등 대부분의 번들러는 기본값으로 소스맵을 생성한다. .npmignore*.map을 추가하거나, package.jsonfiles 필드로 포함할 파일을 명시적으로 지정해야 한다.

2. CI/CD에서 배포 전 패키지 내용을 검증해라

npm pack --dry-run으로 배포될 파일 목록을 사전 확인하는 단계를 CI에 추가해야 한다. 59.8MB짜리 파일이 포함됐다면 자동으로 차단되는 파이프라인이 있었다면 이 사고는 막을 수 있었다.

npm 배포 전 소스맵 및 대용량 파일 검증 스크립트
# .npmignore에 소스맵 제외 추가 echo '*.map' >> .npmignore echo '*.map.gz' >> .npmignore # 배포 전 패키지 내용 미리 확인 npm pack --dry-run 2>&1 | head -50 # CI에서 대용량 파일 검증 (예: 10MB 초과 파일 차단) npm pack --dry-run 2>&1 | awk '/Bundled files/ {p=1} p && /^[0-9]/ {if ($1+0 > 10000000) {print "BLOCKED: " $0; exit 1}}'

3. 피처 플래그는 빌드 시점에 완전히 제거해라

Anthropic의 44개 피처 플래그는 false로 커파일됐지만 코드 자체는 남아있었다. 트리 셰이킹(tree shaking)이나 데드 코드 제거(dead code elimination)가 제대로 동작했다면 이 정보는 노출되지 않았을 것이다.

4. DMCA 테이크다운을 자동화하려면 대상 범위를 반드시 검증해라

8,100개 레포를 무차별적으로 내린 것은 신뢰를 손상시켰다. 오픈소스 생태계에서 대량 DMCA는 반발만 산다.

5. 의존성 설치 시점을 기록해라

공급망 공격은 특정 시간대에만 영향을 미친다. package-lock.json을 커밋하고, CI/CD에서 npm ci(락파일 기반 설치)를 사용하면 재현 가능한 빌드를 보장할 수 있다.

npm 공급망 보안 체크리스트 인포그래픽
npm 패키지 배포 전 검증 절차 요약 (출처: 자체 제작)

AI 코딩 도구 시장에 미치는 영향

PYMNTS.com은 이 유출이 "경쟁사에게 Anthropic이 수십억 달러를 들여 만든 설계 청사진을 넘겨준 것"이라고 평가했다. 구체적으로 어떤 의미가 있는가.

경쟁사 관점: Claude Code의 내부 아키텍처 — 자가 치유 메모리, 에이전트 오케스트레이션, MCP 통합 방식 — 를 역설계(reverse engineering) 없이 직접 분석할 수 있게 됐다. Cursor, GitHub Copilot, Devin 등의 경쟁 도구들이 이 정보를 활용할 수 있다.

오픈소스 커뮤니티 관점: 이미 Rust로 재구현하는 프로젝트(claurst)가 등장했다. 유출된 코드를 기반으로 오픈소스 대안이 만들어질 가능성이 높다.

사용자 신뢰 관점: Mythos 모델 유출에 이은 2번째 보안 사고다. "안전성 우선" 브랜딩을 전면에 내세운 Anthropic으로서는 이러한 연속 실수가 브랜드 신뢰도에 누적적 데미지를 준다.

Claude CodeAnthropic소스코드 유출npm소스맵공급망 보안supply chainDMCA보안 사고AI 코딩 도구

관련 도구

관련 포스트

AI 보안 감사의 실체 — Claude가 Firefox에서 취약점 22개를 찾은 방법2026-03-19