피드로 돌아가기
Dev.toDevOps
원문 읽기
Anthropic Claude Code CI 파이프라인의 source map 삭제 실패와 공개 R2 버킷 접근이 결합되어 512,000줄 TypeScript 소스코드가 유출된 사건
Why Claude Code's Source Code Leaked — And It Wasn't Simple Human Error
AI 요약
Context
Claude Code는 대규모 엔지니어링 프로젝트로 CI/CD 파이프라인을 운영하며, Sentry 기반 프로덕션 에러 모니터링을 위해 빌드 시 source map을 생성한다. CI 빌드 산출물에서 source map 파일을 삭제하는 후속 단계는 독립된 파이프라인 job으로 실행된다.
Technical Solution
- CI 파이프라인 → source map 파일 삭제를 별도 job 단계로 분리하고 실패 시 파이프라인 중단 설정
- 삭제 스크립트 → **/*.map globstar 패턴 적용 및 경로 동적 검증 로직 추가
- Cloudflare R2 버킷 → 비공개 접근 제어 정책 적용 및 ACL/Army 설정 검증
- npm publish 전 → source map 포함 여부 자동 검사 스크립트 실행
- Sentry 연동 → sourcesContent 필드 제거 또는 선택적 업로드 옵션 검토
Impact
512,000줄 TypeScript 소스코드가 npm 패키지 및 R2 버킷을 통해 외부 노출됨. 프로젝트 전체 디렉토리 구조와 핵심 심볼명이 유출되어 코드 로직 역공학 가능.
Key Takeaway
단일 실패는 무해하지만, 두 가지 독립적인 설정 오류가 결합되면 catastrophic한 결과를 초래한다. AI 가속 개발 환경에서는 파이프라인 방어机制的 설계와 스토리지 접근 제어의 중요성이 더욱 커진다.
실천 포인트
CI/CD 파이프라인 환경에서 핵심 빌드 산출물 삭제 단계를 set -e 옵션과 함께 실행하고, 삭제 실패 시 파이프라인을 중단(block)하는 방식으로 적용 시 민감 파일의 의도치 않은 배포를 방지할 수 있다