Post

[Security] Claude Code 소스코드 유출 사건 분석 - npm Source Map 노출과 Supply Chain 공격

2026년 3월 31일 Anthropic의 Claude Code 전체 소스코드가 npm source map 파일을 통해 유출된 사건의 경위, 노출된 내용, 그리고 사용자 대응 방안 정리

사건 개요

2026년 3월 31일, Anthropic의 AI 코딩 에이전트 Claude Code의 전체 소스코드가 공개 npm 레지스트리를 통해 유출됨.

  • 유출 경로: @anthropic-ai/claude-code 패키지 v2.1.88에 포함된 59.8MB 크기의 JavaScript source map(.map) 파일
  • 발견자: Solayer Labs 인턴 Chaofan Shou(@Fried_rice)가 X(구 Twitter)에 최초 공개
  • 규모: 약 512,000줄의 TypeScript 소스코드가 복원 가능한 상태로 노출
  • 영향: 수 시간 내 GitHub에 미러링되어 수천 명의 개발자가 분석

Anthropic의 현재 연간 매출 런레이트가 $19B, Claude Code 단독 ARR이 $2.5B인 상황에서 발생한 대규모 IP 유출 사건임.


Source Map이 뭔데 이게 문제가 되는가

Source map(.map 파일)은 번들링/미니파이된 JavaScript를 원본 소스코드로 역매핑하기 위한 디버깅용 파일임.

1
원본 TypeScript → 컴파일 → 번들링 → 미니파이 → bundle.js + bundle.js.map

.map 파일이 있으면 미니파이된 코드에서 원본 소스코드를 거의 완벽하게 복원할 수 있음. 프로덕션 배포 시 .map 파일을 포함하지 않는 것이 기본 보안 관행인데, 이번에 npm 패키지에 그대로 포함된 것.

이건 해킹이 아님. 빌드 파이프라인의 설정 실수로 인한 유출임.


유출된 핵심 내용

1. 3계층 메모리 아키텍처 (Self-Healing Memory)

Claude Code가 장시간 세션에서 컨텍스트 혼란(context entropy)을 방지하는 방법이 공개됨.

  • MEMORY.md: 경량 인덱스 파일. 줄당 ~150자의 포인터만 저장. 데이터가 아닌 위치를 기록
  • Topic Files: 실제 프로젝트 지식은 주제별 파일로 분산 저장, 필요 시 on-demand 로딩
  • Raw Transcripts: 전체를 다시 읽지 않고 특정 식별자로 grep하여 참조

핵심은 “Strict Write Discipline” — 파일 쓰기가 성공한 후에만 인덱스를 업데이트하여, 실패한 시도가 컨텍스트를 오염시키는 것을 방지함. 에이전트가 자신의 메모리를 “힌트”로 취급하고, 실제 코드베이스와 대조 검증하도록 설계되어 있음.

2. KAIROS - 자율 데몬 모드

소스에서 150회 이상 참조되는 KAIROS 피처 플래그가 발견됨. 고대 그리스어로 “적절한 시간”을 의미.

  • 사용자가 idle 상태일 때 백그라운드에서 동작하는 자율 에이전트 모드
  • autoDream 프로세스: 메모리 통합, 논리적 모순 제거, 모호한 인사이트를 확정된 사실로 변환
  • 포크된 sub-agent가 메인 에이전트의 사고 흐름을 방해하지 않도록 분리 실행

3. 미공개 내부 모델 코드네임

코드네임매핑
CapybaraClaude 4.6 variant
FennecOpus 4.6
Numbat미출시, 테스트 중

내부 코멘트에 따르면 Capybara v8까지 이터레이션 중이나, 허위 주장(false claims) 비율이 v4의 16.7%에서 v8의 29-30%로 오히려 증가하는 회귀 현상이 발생 중.

4. Undercover Mode

Claude Code가 공개 오픈소스 저장소에 스텔스 기여를 하기 위한 모드.

시스템 프롬프트:

“You are operating UNDERCOVER… Your commit messages… MUST NOT contain ANY Anthropic-internal information. Do not blow your cover.”

모델명(Tengu, Capybara 등)이나 AI 관련 어트리뷰션이 public git log에 노출되지 않도록 하는 로직이 포함됨.

5. Buddy System

CHAOS, SNARK 같은 스탯을 가진 다마고치 스타일의 터미널 펫 시스템. 사용자 리텐션을 위한 게이미피케이션 요소.


동시 발생한 Supply Chain 공격

유출과 별개로, 같은 날 axios npm 패키지에 대한 supply chain 공격이 발생함.

  • 영향 버전: axios 1.14.1 또는 0.30.4
  • 시간대: 2026년 3월 31일 00:21 ~ 03:29 UTC
  • 내용: RAT(Remote Access Trojan)이 포함된 악성 버전 배포
  • 의존성: plain-crypto-js라는 악성 패키지를 추가로 설치

이 시간대에 Claude Code를 npm으로 설치/업데이트한 경우, 악성 axios가 함께 설치되었을 가능성이 있음.


사용자 대응 방안

즉시 확인

1
2
# lockfile에서 악성 버전 확인
grep -E "axios@(1\.14\.1|0\.30\.4)|plain-crypto-js" package-lock.json yarn.lock

위 명령어에서 매칭되는 항목이 있으면 해당 머신은 완전히 침해된 것으로 간주해야 함.

침해 확인 시 조치

  1. 모든 시크릿/크레덴셜 즉시 로테이션
  2. Anthropic API 키 재발급 (개발자 콘솔)
  3. 클린 OS 재설치 권장
  4. 사용량 모니터링에서 이상 징후 확인

npm 설치 대신 Native Installer 사용

1
2
# Anthropic 권장 설치 방법 (npm 의존성 체인 회피)
curl -fsSL https://claude.ai/install.sh | bash

Native Installer는 standalone 바이너리로, npm 의존성 체인에 의존하지 않음. 백그라운드 자동 업데이트도 지원.

npm을 계속 사용해야 하는 경우

  • v2.1.88 즉시 삭제
  • v2.1.86 이하로 핀 고정
  • v2.1.89 이상의 패치 버전 출시 시 업데이트

제로 트러스트 자세

  • 신뢰할 수 없는 레포지토리에서 Claude Code 실행 전 .claude/config.json과 커스텀 hooks 수동 검사
  • Hooks와 MCP 서버의 오케스트레이션 로직이 공개되었으므로, 악성 레포가 Claude Code를 속여 백그라운드 명령을 실행하도록 설계될 수 있음

시사점

빌드 파이프라인 보안

이번 유출의 근본 원인은 빌드 설정 실수임. npm publish 전에 .map 파일을 제외하는 것은 기본 중의 기본인데, 이게 빠졌다는 건 CI/CD 파이프라인에 publish artifact 검증 단계가 없었다는 뜻.

1
2
3
4
// package.json - files 필드로 배포 대상 명시
{
  "files": ["dist/**/*.js", "!**/*.map"]
}

또는 .npmignore*.map을 추가하는 것만으로도 방지 가능했음.

Source Map 관리

  • 프로덕션 배포 시 source map은 절대 포함하지 않거나, 별도의 비공개 저장소에 업로드
  • Sentry, Datadog 같은 에러 트래킹 서비스에 source map을 업로드하는 경우에도 접근 제어 필수
  • CI/CD에서 publish 전 artifact 내용을 자동 검증하는 단계 추가

npm Supply Chain 보안

같은 날 axios 공격이 동시에 발생한 건 우연이든 아니든, npm 생태계의 supply chain 취약성을 다시 한번 보여줌.

  • npm audit을 CI에 필수 포함
  • lockfile 기반 설치 (npm ci) 사용
  • 의존성 업데이트 시 diff 확인 습관화
  • Socket.dev, Snyk 같은 supply chain 보안 도구 도입 고려

정리

  • Claude Code 소스코드가 npm source map 파일을 통해 전량 유출
  • 3계층 메모리 아키텍처, KAIROS 자율 데몬, 미공개 모델 코드네임, Undercover Mode 등 핵심 IP가 노출
  • 동시에 axios npm 패키지에 대한 supply chain 공격이 발생하여, 특정 시간대에 설치한 사용자는 RAT 감염 가능성 있음
  • npm 대신 Native Installer 사용이 권장되며, 침해 여부 즉시 확인 필요
  • 근본 원인은 빌드 파이프라인에서 .map 파일 제외를 누락한 설정 실수. CI/CD에 artifact 검증 단계를 추가하는 것이 재발 방지의 핵심
This post is licensed under CC BY 4.0 by the author.