피드로 돌아가기
The Great Claude Code Leak of 2026: Accident, Incompetence, or the Best PR Stunt in AI History?
Dev.toDev.to
DevOps

Anthropic이 npm 배포 시 .npmignore 설정 누락으로 Claude Code 512,000줄 TypeScript 소스가 공개 접근 가능한 상태로 유출된 사건

The Great Claude Code Leak of 2026: Accident, Incompetence, or the Best PR Stunt in AI History?

Varshith V Hegde2026년 4월 1일17intermediate

Context

npm 패키지 배포 시 소스맵(.map) 파일 제외 설정을 .npmignore에 추가하지 않아 59.8MB 크기의 소스맵이 npm registry에 포함되었다. 소스맵 내부에 Claude Code 소스가 직접 포함된 것이 아니라 Anthropic Cloudflare R2 버킷의 src.zip URL을 참조하는 구조였다. 해당 R2 버킷이 인증 없이 공개 접근 가능한 상태였으며, 이 두 가지 설정 오류가 결합되어 전체 소스 코드가 유출되었다. Bun JavaScript 런타임의 알려진 버그(issue #28001)도 이 유출에 기여했다.

Technical Solution

  • npm 패키지에서 .map 파일 제외: .npmignore 또는 package.json의 files 필드에 .map, dist/.map 설정 추가
  • Cloudflare R2 버킷 접근 제어: 빌드 산출물에서 참조하는 스토리지 버킷에 인증 요구 또는 비공개 설정 적용
  • npm 배포 전 검증: npm pack --dry-run으로 게시 파일 목록 사전 검토
  • Native Installer 제공: npm 의존성 체인 대신 standalone binary 설치 방식으로 전환
  • 잠금 파일 감사: package-lock.json, yarn.lock, bun.lockb에서 악성 axios 버전 확인 명령 제공

Impact

GitHub 포크 41,500건 이상 발생, fastest repo가 2시간 만에 GitHub Stars 50,000건 도달, 원본 트윗 조회수 1,600만건 기록

Key Takeaway

.npmignore 파일은 단순한 설정이 아니라 코드 유출 방지의 보안 경계이며, 빌드 산출물에 포함된 모든 외부 URL의 접근 권한을 반드시 감사해야 한다.


npm 패키지 배포 시 .npmignore 파일 또는 package.json files 필드를 통해 *.map 파일을 명시적으로 제외하고, npm pack --dry-run으로 게시 파일 목록을 배포 전 검증하면 소스 코드 유출을 원천 차단할 수 있다

원문 읽기