피드로 돌아가기
The Pre-Commit Hook That Catches API Keys Before They Hit Git
Dev.toDev.to
Security

POSIX Shell 기반 Pre-commit Hook으로 Secret 유출 0% 도전

The Pre-Commit Hook That Catches API Keys Before They Hit Git

Paul Harvey2026년 5월 23일8intermediate

Context

Git History에 기록된 Secret Key는 단순 삭제로 제거가 불가능한 영구적 보안 취약점임. 특히 AWS, Stripe 등 클라우드 서비스 키 유출 시 발생하는 Blast Radius의 규모와 Key Rotation의 운영 비용이 극도로 높음.

Technical Solution

  • git show :$file 명령어를 통한 Staged Content 직접 분석으로 Working Tree 변경 사항에 의한 False Negative 원천 차단
  • 정규 표현식 기반의 Vendor-specific 패턴(AWS, Stripe, GitHub)과 32자 이상의 High-entropy 문자열 탐지 로직으로 범용적 스캔 수행
  • pii-ok 프라그마 도입을 통한 False Positive 처리로 개발자 경험 저해 및 Hook 무력화 시도 방지
  • Pure POSIX Shell 및 grep 기반 설계로 외부 의존성을 제거하여 런타임 오버헤드 최소화
  • scripts/ 디렉토리 체크인 및 심볼릭 링크 설정을 통한 팀 전반의 일관된 보안 정책 강제화
  • --no-verify 옵션으로 인한 우회 가능성을 보완하기 위한 CI 단계의 2차 검증 레이어 구축

- .git/hooks/pre-commit에 정규식 기반 Secret 스캐너 적용 - git show :$file을 사용하여 Stage 영역의 데이터만 검사하는지 확인 - 정당한 테스트 데이터 허용을 위한 pii-ok와 같은 예외 처리 기제 마련 - 로컬 Hook 우회 가능성을 고려하여 CI 파이프라인에 동일 패턴 스캔 추가

원문 읽기