피드로 돌아가기
InfoQInfoQ
Security

빌드 설정 실수 하나가 초래한 Claude Code 전체 소스코드 유출 사고 분석

Anthropic Accidentally Exposes Claude Code Source via npm Source Map File

Steef-Jan Wiggers2026년 4월 7일5intermediate

Context

Bun 런타임의 기본 Source Map 생성 설정으로 인해 배포 패키지에 .map 파일이 포함된 설계 오류. 해당 파일이 R2 스토리지의 TypeScript 원본 소스코드 ZIP 아카이브를 직접 참조하는 구조. 빌드 아티팩트 관리 미흡으로 인한 전사적 코드 노출 사고.

Technical Solution

  • .npmignore 파일에 *.map 패턴을 추가하여 빌드 결과물의 npm 레지스트리 업로드 원천 차단
  • package.json의 files 필드에 명시적 화이트리스트를 정의하여 배포 대상 파일의 엄격한 제어
  • npm pack --dry-run 명령어를 통한 배포 전 패키지 포함 내역 감사 프로세스 도입
  • Minified JS의 리버스 엔지니어링 가능성을 고려한 중요 로직의 서버 사이드 이전 검토
  • Prompt Injection 방어를 위한 시스템 프롬프트 및 오케스트레이션 로직의 보안 강화

Impact

  • TypeScript 파일 약 1,900개 및 512,000행 이상의 소스코드 노출
  • 약 46,000행 규모의 쿼리 엔진 및 40여 개의 개별 도구 권한 체계 유출

Key Takeaway

클라이언트 사이드 배포물은 언제든 분석 가능하다는 전제하에, 핵심 비즈니스 로직과 시스템 프롬프트를 클라이언트 코드에 직접 포함하지 않는 제로 트러스트 설계 원칙 준수 필요.


npm 배포 전 .npmignore 설정 확인 및 npm pack --dry-run을 통한 아티팩트 검증을 CI/CD 파이프라인에 필수 단계로 포함할 것

원문 읽기