피드로 돌아가기
Dev.toSecurity
원문 읽기
POSIX Shell 기반 Pre-commit Hook으로 Secret 유출 0% 도전
The Pre-Commit Hook That Catches API Keys Before They Hit Git
AI 요약
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 파이프라인에 동일 패턴 스캔 추가