새 소식우리 회사에 어떤 규제가 적용되는지 알고 계신가요? 3분 안에 확인할 수 있습니다. Panke가 드리는 진심 어린 선물:EU 스코퍼한국 스코퍼
무엇을 도와드릴까요?

채널로 문의하기

KakaoTalkLINE

48시간 이내 답변

이메일 보내기 →
커밋에서 지운 API 키, 깃 히스토리엔 그대로 남습니다
취약점

커밋에서 지운 API 키, 깃 히스토리엔 그대로 남습니다

2026년 7월 24일·Alex Holmquist, Panke IT Solutions LLC

실수로 API 키를 커밋했다가 한 시간 안에 알아채고, 다음 커밋에서 지운 뒤 넘어갑니다. 저는 이런 경우를 셀 수 없이 많이 봤습니다. 하지만 그 키는 아직 깃 히스토리에 그대로 남아 있습니다. 당신이 한 일은 시크릿이 그대로 담긴 트리 위에 변경을 더 쌓은 것뿐입니다. 깃은 그것을 위에 얹었을 뿐이죠. 유출된 시크릿을 삭제하는 것이 왜 도움이 되지 않는지, 그리고 실제로 효과가 있는 두 가지 조치를 정리했습니다.

어두운 화면에 놓인 깃 커밋들의 줄: 앞쪽 커밋 안에서 작은 열쇠가 빛나고, 뒤쪽의

깃은 전부 보관합니다

깃은 프로젝트를 스냅샷의 사슬로 저장합니다. 새 커밋은 그 앞의 커밋들을 손대지 않고 그대로 둡니다.

시크릿이 담긴 스냅샷은 사슬 뒤쪽에 남아, 리포지토리에 접근할 수 있는 사람 누구에게나 닿습니다. 이것이 버전 관리의 핵심입니다. 언제든 과거 상태로 되돌아갈 수 있게 해 주니까요.

공격자는 히스토리 전체를 읽습니다

당신의 깃 히스토리가 '외부인'에게 닿는 경로를 예로 들어 보겠습니다.

첫 번째는 공개 리포지토리입니다. 자동 스캐너가 24시간 이를 훑습니다.

GitGuardian, State of Secrets Sprawl 2026: 2025년 공개 커밋에서 새로 발견된 하드코딩된 시크릿이 2,865만 건으로, 한 해 만에 34% 늘었습니다.

갓 푸시된 자격증명은 대개 몇 분 안에 발견됩니다.

두 번째는 훨씬 은밀합니다. 프로젝트 폴더를 그대로 서버에 복사해 웹사이트를 배포하면, 숨은 .git 디렉터리가 함께 딸려 갈 수 있습니다.

git-dumper 같은 도구는 그 상태에서 전체 소스 트리를 손쉽게 재구성합니다.

두 경우 모두 요점은 분명합니다. 공격자는 트리를 거슬러 올라가 당신이 지웠다고 믿은 시크릿을 읽을 수 있습니다.

지운다고 해결되지 않습니다

복사기 배출함에는 열쇠 표시가 찍힌 똑같은 문서가 한 무더기 쌓여 있고, 여러 손이 그 위에서 사본을 집어 제각기 다른 방향으로 가져가는 사이, 앞쪽에서는 한 손이 사본 한 장을 문서 세단기에 밀어 넣고 있다 — 이미 늦었다.

히스토리를 제대로 다시 쓴다 해도 — git filter-repo나 BFG로 모든 커밋에서 그 파일을 도려낸다 해도 — 시크릿은 여전히 안전하지 않습니다.

푸시된 바로 그 순간부터 이미 누군가 복제하거나 포크했을 수도, 크롤러가 캐시했을 수도, 스캐너가 복사해 갔을 수도 있습니다.

시크릿을 교체하세요

공유 리포지토리에 닿은 시크릿은 이미 타 버린 것으로 취급하세요. 폐기하고 교체하는 것을 원칙으로 삼으세요. 키를 교체하고, 토큰을 무효화하고, 비밀번호를 재설정하세요. 공격자에게 열린 그 문을 실제로 닫는 것은 이것뿐입니다.

내 사이트를 빠르게 점검하세요

공개 인터넷에 웹사이트를 서비스하고 있다면, 간단한 점검을 한 번 해 볼 만합니다. GET /.git/config. 이 간단한 확인이 나중의 긴 고통을 덜어 줄 수 있습니다.

이 요청이 200을 반환한다면 상황이 좋지 않습니다. 저라면 즉시 움직여, 조직의 시크릿 유출 대응 절차(playbook)에 따라 긴급 침해대응을 발동하겠습니다. 보통 이런 단계로 진행됩니다.

  1. 증거 수집 — 서버의 메모리와 데이터를 즉시 안전한 저장소로 스냅샷하세요.
  2. 격리(Containment) — 해당 폴더 서비스를 중단하세요.
  3. 복구 — 그 안의 모든 시크릿을 교체하고, 전부 유출됐다고 가정하세요.
  4. 근본 원인 분석 — 측면 이동(lateral movement) 여부와 어떻게 발생했는지 확인하세요.
  5. 교훈 정리 — 팀과 공유하고, 재발을 막을 정책과 절차를 마련하세요.

침해대응 절차가 아직 없다면, 만드는 것을 우선순위로 삼으세요. 막상 그날이 오면, 정해진 절차를 따르는 대신 '무엇을 해야 하지'를 고민하며 시간을 흘려보내는 것이 최악입니다.

지속적인 모니터링

커밋이 빌드 파이프라인을 따라 gitleaks라고 적힌 검사 관문으로 들어간다: 관문은 열쇠를 실은 커밋을 막고 빌드 실패 도장을 찍고, 깨끗한 커밋은 통과시킨다.

공격자의 유일한 강점은 속도입니다. 그러니 그들보다 먼저 스캔하세요. gitleaks는 리포지토리의 히스토리와 변경 내역(diff)에서 자격증명처럼 생긴 것을 찾아냅니다.

이렇게 돌리세요.

  1. 프리커밋(pre-commit) 훅 — 시크릿이 개발자 PC 단계에서 걸립니다.
  2. CI/CD 게이트 — 모든 푸시와 풀 리퀘스트에서. 원격 저장소로 빠져나간 시크릿을 잡아냅니다.
  3. 크론(cron) 작업 — 모든 리포지토리를 주기적으로 스캔하세요(공개 리포지토리가 우선입니다).

이것을 프로세스로 만들어 두면 유출을 피할 가능성이 훨씬 높아집니다.


저희가 점검에서 발견하는 노출된 시크릿의 상당수는 오래전에 '지운' 것들입니다. 커밋에서 삭제하고 사라졌다고 믿은 것들이죠. 이런 노출은 저희가 모의해킹 점검에서 자주 마주치는 것들입니다.

마지막으로 리포지토리에서 유출된 시크릿을 스캔해 본 게 언제인가요?

Panke와 함께 보안 수준을 점검해 보세요

참고 자료

  1. GitGuardian, "The State of Secrets Sprawl 2026" (2026) — https://www.gitguardian.com/state-of-secrets-sprawl-report-2026
  2. arthaud, "git-dumper: A tool to dump a git repository from a website" — https://github.com/arthaud/git-dumper
  3. Gitleaks, "Find secrets with Gitleaks" — https://github.com/gitleaks/gitleaks
  4. GitHub Docs, "Removing sensitive data from a repository" — https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository
  5. 모의해킹은 왜 비싼가, 자동 스캔이 못 하는 일 — Panke
귀사의 공격 표면이 걱정되시나요?

귀사의 인프라가 공격자의 스코어링 모델에서 어떻게 평가되는지 알고 싶다면 contact@pankeit.com으로 문의해 주세요. 동일한 지문채취 및 스코어링 프로세스를 실행하고 우선순위가 매겨진 개선 목록을 제공합니다.

블로그 구독하기

최신 보안 동향을 가장 먼저 받아보세요

스팸 없음. 언제든 구독 취소.

©2026 Panke IT Solutions LLC

Austin, TX