피드로 돌아가기
Your AI Code Has 6 Secret Hits. Only 3 Ship in the npm Package.
Dev.toDev.to
Security

Git Tree와 npm Pack 간의 Gap 분석을 통한 배포 패키지 Secret 유출 원천 차단

Your AI Code Has 6 Secret Hits. Only 3 Ship in the npm Package.

Alexey Spinov2026년 6월 25일11intermediate

Context

기존 Secret Scanner는 Git Tree 전체를 검사하여 Repository 기준의 위협만 탐지하는 한계 존재. 실제 배포되는 npm Tarball은 package.json의 files allowlist와 .npmignore 규칙에 의해 결정되므로, 스캐너 탐지 결과와 실제 배포 파일 셋 사이의 괴리 발생.

Technical Solution

  • Git Tree 기반 탐지와 npm Pack 대상 파일 필터링을 결합한 leak_probe.py 설계
  • Provider Regex를 통한 AWS, OpenAI 등 주요 벤더별 고유 Key 패턴 매칭 적용
  • Shannon Entropy 3.5 임계값 설정을 통한 단순 Placeholder와 실제 Secret의 구분
  • package.json의 files 필드, .npmignore, 기본 포함 파일(README.md 등)을 반영한 Packaging Filter 구현
  • npm pack --dry-run 명령어로 도출된 Ground Truth 파일 셋과 Secret Hit 리스트의 교집합 분석
  • 배포 전 pre-publish hook에 연결하여 Shipping Secret 발견 시 Exit Code 1을 반환하는 빌드 차단 구조 설계

1. Secret Scanner 결과에 의존하지 말고 npm pack --dry-run으로 실제 배포 파일 목록 확인

2. 배포 파이프라인의 pre-publish 단계에 Shipping Secret 전용 검증 스크립트 추가

3. 프로젝트 특성에 맞춰 Shannon Entropy 임계값(예:

3.5 ~

3.8) 튜닝 및 검토

4. .npmignore 및 package.json의 files allowlist 설정이 보안 정책과 일치하는지 주기적 감사

원문 읽기