무슨 일이 일어났나
GitHub이 공식 블로그를 통해 발표한 바에 따르면, 2024년 한 해 동안 GitHub 플랫폼 전체에서 **3,900만 건의 시크릿(API 키, 토큰, 인증 정보)**이 유출된 것으로 확인되었습니다. 이는 이전 연도 대비 크게 증가한 수치이며, 문제는 2025~2026년에도 지속되고 있습니다.
클라우드 보안 기업 Wiz의 조사에 따르면, Forbes AI 50에 선정된 AI 기업 중 65%가 GitHub에 검증된 시크릿을 유출한 경험이 있었습니다. 한 AI 50 기업에서 유출된 Hugging Face 토큰은 약 1,000개의 비공개 모델에 접근할 수 있는 권한을 가지고 있었으며, 공격자가 이를 이용하면 독점 AI 모델과 학습 데이터를 탈취할 수 있는 상태였습니다.
실제 피해 사례도 속속 확인되고 있습니다. Home Depot의 경우 2024년 초에 GitHub에 게시된 액세스 토큰이 1년 이상 노출된 상태로 방치되었으며, 이 토큰은 수백 개의 비공개 저장소와 연결된 클라우드 인프라에 대한 읽기/쓰기 권한을 가지고 있었습니다.
2025년에는 Salesloft(구 Drift)의 GitHub 계정이 침해되어 Cloudflare, Zscaler, Palo Alto Networks 등 700개 이상의 기업이 영향을 받는 공급망 공격으로 이어졌습니다.
왜 위험한가
API 키 유출이 위험한 이유는 하나의 키가 전체 인프라의 문을 여는 마스터키 역할을 할 수 있기 때문입니다.
즉각적인 악용 가능성: GitHub에 시크릿이 노출되면 자동화된 스캐너가 수 분 이내에 이를 탐지합니다. 공격자는 봇을 운영하며 GitHub의 공개 커밋을 실시간으로 모니터링하고 있습니다. 키가 노출된 순간부터 악용까지의 시간은 평균 몇 분에 불과합니다.
비용 폭탄: AWS, GCP, Azure 등 클라우드 서비스의 API 키가 유출되면 공격자가 대규모 컴퓨팅 리소스를 무단으로 사용할 수 있습니다. 암호화폐 채굴에 악용되는 경우가 흔하며, 하룻밤 사이에 수천만 원의 클라우드 비용이 발생한 사례가 다수 보고되었습니다.
공급망 공격의 진입점: 2025년 tj-actions/changed-files GitHub Action이 공급망 공격에 의해 침해되어 23,000개 이상의 저장소에 영향을 미쳤습니다. CI/CD 파이프라인의 시크릿이 워크플로 로그에 노출되면서 2차 피해로 확산되었습니다.
장기 잠복: Home Depot 사례처럼 유출된 키가 1년 이상 방치되는 경우도 많습니다. 많은 조직이 키 로테이션 정책을 제대로 시행하지 않아, 한 번 유출된 키로 장기간 접근이 가능한 상태가 유지됩니다.
나에게 어떤 영향이 있는가
개발자라면 이 문제는 직접적인 위협입니다. GitHub에 코드를 푸시할 때 .env 파일, 설정 파일, 하드코딩된 토큰 등이 함께 올라가는 실수는 경력에 관계없이 발생합니다. 특히 개인 프로젝트에서 테스트 용도로 사용하던 키를 운영 환경의 키와 동일하게 설정하는 경우, 개인 저장소의 유출이 조직 전체의 보안 사고로 확대될 수 있습니다.
기업 입장에서는 내부 개발자뿐 아니라 외부 기여자, CI/CD 파이프라인, 서드파티 GitHub Action 등 시크릿이 노출될 수 있는 경로가 다양합니다. 하나의 유출된 키가 고객 데이터 유출, 서비스 장애, 규제 위반으로 이어질 수 있습니다.
일반 사용자도 간접적인 영향을 받습니다. 사용하는 서비스의 API 키가 유출되면 개인정보가 노출되거나, 서비스가 중단될 수 있습니다. 2024~2026년 사이 발생한 주요 데이터 유출 사건의 상당수가 시크릿 관리 실패에서 비롯되었습니다.
지금 할 수 있는 대응법
개발자라면
.gitignore를 철저히 관리하세요. .env, .env.local, credentials.json, *.pem, *.key 등 민감 파일은 반드시 .gitignore에 포함시켜야 합니다. 프로젝트 생성 시 첫 번째로 할 일입니다.
git-secrets 또는 pre-commit 훅을 설치하세요. git-secrets(AWS), detect-secrets(Yelp), gitleaks 같은 도구를 pre-commit 훅으로 설정하면 시크릿이 포함된 커밋을 푸시 전에 차단할 수 있습니다.
이미 노출된 키는 즉시 폐기하세요. 키를 삭제하고 새 커밋을 만드는 것만으로는 부족합니다. Git 히스토리에 이전 커밋이 남아 있으므로, 해당 키를 클라우드 콘솔에서 즉시 비활성화하고 새 키를 발급받아야 합니다.
팀/조직 차원
GitHub Advanced Security의 Secret Scanning을 활성화하세요. GitHub은 200개 이상의 서비스 패턴에 대한 시크릿 스캐닝을 제공합니다. Push Protection 기능을 활성화하면 시크릿이 포함된 푸시 자체를 차단할 수 있습니다.
시크릿 관리 도구를 도입하세요. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault 등 전용 시크릿 관리 도구를 사용하면 코드에 시크릿을 하드코딩할 필요가 없습니다. 환경 변수를 통해 런타임에 주입하는 방식을 채택하세요.
키 로테이션 정책을 수립하세요. 모든 API 키와 토큰에 만료 기한을 설정하고, 정기적으로(최소 90일 주기) 교체하는 정책을 시행해야 합니다. 자동 로테이션이 가능한 서비스는 반드시 활성화하세요.
최소 권한 원칙을 적용하세요. API 키 발급 시 필요한 최소한의 권한만 부여하세요. 읽기만 필요한 곳에 쓰기 권한이 포함된 키를 사용하면 유출 시 피해가 확대됩니다.
참고