🔓인사이트

클로드 소스코드 유출 사건: npm 패키지 소스맵 실수로 전체 코드 노출

Anthropic의 Claude Code CLI 소스코드가 npm 패키지에 포함된 .map 파일을 통해 완전히 유출된 사건

원본 링크
#Anthropic#보안#소스코드유출#Claude#npm

📅 사건 개요

2025년 3월 31일, Anthropic의 Claude Code CLI 전체 소스코드가 npm 패키지를 통해 유출되는 사건이 발생했습니다.

🔍 유출 원인

소스맵(.map) 파일 배포 실수

Claude Code는 Bun 번들러를 사용하여 빌드
Bun은 기본적으로 소스맵 파일을 생성
프로덕션 빌드에서 소스맵 생성을 비활성화하지 않음
결과적으로 .map 파일이 npm 패키지에 포함되어 배포

소스맵은 압축된 코드를 원본 코드로 매핑해주는 디버깅 도구입니다. 개발 중에는 유용하지만, 프로덕션 환경에서는 반드시 제거해야 합니다.

📊 유출 규모

총 51만 2천 줄 이상의 TypeScript 코드

파일 수: 1,900개
GitHub 아카이브: 수 시간 내 생성
좋아요: 1,100개 이상
포크: 1,900개 이상

📦 주요 유출 내용

핵심 시스템

툴 시스템: 약 40개의 권한 기반 도구 (2만 9천 줄)
쿼리 엔진: 모든 LLM API 호출 처리 (4만 6천 줄)
멀티에이전트 오케스트레이션: 여러 AI 에이전트 조율
IDE 브릿지 시스템: 개발 환경 연동

🎮 숨겨진 기능들

1. "Buddy" - 다마고치 스타일 반려동물

컴파일 타임 피처 플래그로 숨겨진 기능
Claude Code 내부에 캐릭터 부화 및 육성 미니게임
사용자에게는 공개되지 않은 이스터에그

2. "Undercover Mode" - 내부 정보 보호 모드

Anthropic 직원용 특수 모드
오픈소스 프로젝트 작업 시 민감 정보 노출 방지
내부 코드명이나 미공개 모델명이 커밋 메시지에 포함되지 않도록 필터링
아이러니: 유출을 막으려는 시스템을 만들어두고 정작 소스코드 전체를 유출

💡 교훈

이 사건은 다음과 같은 중요한 교훈을 제공합니다:

1.빌드 설정 검증: 프로덕션 빌드에서 디버깅 파일 제거 필수
2.배포 전 점검: npm 패키지 내용물 확인 프로세스 필요
3.자동화된 검증: 민감한 파일 포함 여부 자동 체크

🔐 개발자를 위한 팁

프로덕션 배포 시 주의사항:

json
// package.json - 배포 파일 제한
{
  "files": [
    "dist/**/*.js",
    "!dist/**/*.map"
  ]
}
javascript
// Bun 빌드 설정 - 소스맵 비활성화
await Bun.build({
  entrypoints: ['./src/index.ts'],
  outdir: './dist',
  sourcemap: 'none' // 프로덕션에서는 'none'
});

🎯 결론

작은 설정 실수 하나가 수십만 줄의 코드를 세상에 공개하는 결과를 낳았습니다. 보안은 큰 취약점보다 이런 작은 실수에서 시작되는 경우가 많습니다.