
보안 업체 Truffle Security가 GitHub에 공개된 저장소 2억 2,400만 개와 파일 580억 개 이상을 분석한 결과, 아직도 유효하게 사용 가능한 계정 정보(credential) 54만 3,699건이 노출된 상태로 남아 있는 것으로 나타났습니다. 노출된 정보가 공개 상태로 방치된 기간은 평균(중앙값) 784일이나 됐고, 가장 오래된 것은 2009년부터 노출돼 있었습니다. GitHub가 민감정보 유출을 막기 위해 Push Protection이라는 보호 기능을 도입했지만, 이미 새어나간 계정 정보를 자동으로 무효화해주지는 않아서 여전히 많은 정보가 위험에 노출돼 있습니다. 특히 npm 토큰은 유출돼도 대부분 곧 무효화되는 반면, Google Cloud 서비스 계정 정보는 유출된 것 중 절반 이상이 여전히 사용 가능한 상태로 확인돼 서비스별로 대응 수준 차이가 크다는 점이 드러났습니다. 전문가들은 노출된 계정 정보를 즉시 교체(rotate)하고, 저장소와 커밋 이력을 정리하며, 모든 활성 비밀정보에 자동 만료 기한을 설정할 것을 권고합니다.
보안 업체 Truffle Security가 공개 GitHub 저장소를 대규모로 스캔한 결과, 현재도 유효하게 작동하는 계정 정보(API 키, 토큰, 접속 정보 등) 54만 3,699건이 노출되어 있는 것으로 확인됐습니다.
노출된 계정 정보가 공개 상태로 방치된 기간은 평균 784일, 일부는 2009년부터 10년 넘게 노출돼 있었으며, 이를 악용하면 클라우드 계정 등 주요 시스템에 무단 접근할 수 있습니다.
GitHub의 유출 방지 기능인 Push Protection이 2024년 2월부터 전체 사용자에게 기본 적용됐지만, 이미 새어나간 정보를 자동으로 무효화하지 않고, 데이터베이스 접속 문자열이나 Google API 키 등 보호 대상에서 빠진 유형도 전체의 절반가량을 차지합니다.
Push Protection 적용 이후 보호 대상 항목의 노출 비율은 53% 감소하는 등 효과가 있었지만, 근본 대응을 위해서는 노출된 계정 정보를 즉시 교체하고 저장소 이력을 정리해야 합니다.
기업은 소스코드 저장소에 남아있는 과거 커밋 이력까지 점검하고, 모든 API 키·토큰류에 자동 만료 기한을 설정하는 정책을 마련할 필요가 있습니다.
본문
GitHub의 민감정보 유출 방지 조치에도 불구하고, 공개 저장소에 노출된 계정 정보 54만 3,000여 건이 7월 기준 여전히 유효한 것으로 나타났습니다.
2억 2,400만 개 저장소와 580억 개 이상의 파일을 스캔한 데이터에 따르면, 고유한 계정 정보 하나가 공개 상태로 방치된 기간의 중앙값은 784일이었습니다.
이번 조사는 Truffle Security가 진행했으며, 작동 가능한 계정 정보 중 약 10%는 6.3년 이상 된 것이었고 가장 오래된 것은 2009년으로 거슬러 올라갑니다.
연구진은 총 54만 3,699개의 고유한 계정 정보를 확인했으며, 이는 포크(fork)된 복사본을 포함해 110만 개 이상의 파일과 저장소에 걸쳐 반복적으로 나타났습니다.
이 평가는 2025년 8월 7일에 마감된 크롤링을 기반으로, 대형 언어 모델(LLM) 학습용으로 구축된 데이터셋을 대상으로 수행됐습니다.
Truffle Security에 따르면 이번 GitHub 노출 건수는 8월에 Hugging Face를 스캔해 발견한 22만 1,303건의 작동 가능한 계정 정보보다 두 배 이상 많습니다.
연구진은 비밀정보(secret)의 밀도가 시간이 지날수록 증가했다고 밝혔으며, 작동 가능한 계정 정보의 수는 2015년 파일 100만 개당 3.72건에서 2025년에는 최고 11.62건까지 늘었습니다.
Truffle의 조사 결과 개요
출처: Truffle Security
Push Protection의 효과
GitHub가 계정 정보의 실수 유출을 막기 위해 도입한 안전장치인 Push Protection은 2022년 4월 Advanced Security 사용자를 대상으로 처음 도입됐고, 2023년 5월에는 공개 저장소에서도 이용할 수 있게 됐습니다. 1년 후 GitHub는 이를 기본값으로 활성화했습니다.
이 기능은 업로드되는 코드를 스캔해 API 키나 액세스 토큰 같은 비밀정보 패턴을 탐지하면 업로드를 차단합니다. 다만 이미 노출된 계정 정보를 무효화하지는 않습니다.
Truffle Security는 7월 기준 확인된 계정 정보 중 19만 9,843건이 GitHub가 2024년 2월 모든 사용자를 대상으로 Push Protection을 활성화한 이후에 노출된 것이라고 밝혔으며, 이는 전체의 약 36.8%에 해당합니다.
유효한 계정 정보의 절반이 조금 넘는 51.8%는 GitHub의 기본 Push Protection이 차단하지 않는 범주에 속했으며, 여기에는 데이터베이스 접속 문자열과 Google API 키가 포함됩니다.
하지만 Push Protection은 자신이 다루는 범위 안에서는 효과적인 것으로 보입니다: 이 기능이 기본 활성화된 이후 보호 대상 범주에서의 계정 정보 노출 비율은 53% 감소했습니다.
비밀정보 노출 현황
출처: Truffle Security
노출된 비밀정보의 무효화
데이터셋을 더 폭넓게 살펴보면, Truffle은 서비스에 따라 계정 정보 유형별로 무효화될 가능성이 크게 다르다고 밝혔습니다.
예를 들어, 커밋된 npm 토큰 10만 1,886건 중 연구진이 확인한 바로는 단 1건만 여전히 작동했습니다. 반면 노출된 Google Cloud 서비스 계정 정보 12만 6,963건 중에서는 분석 시점 기준 6만 9,041건이 여전히 유효하게 작동했습니다.
영향을 받는 조직에 대한 실질적인 권고사항은 노출된 계정 정보를 즉시 교체(rotate)하고, 저장소를 정리하며, 커밋 이력을 스캔하고, 활성 상태인 모든 비밀정보에 자동 만료 기한을 설정하라는 것입니다.
Truffle Security의 조사 결과는 GitHub 상에서 작동 가능한 비밀정보 노출의 수준과 규모를 보여주지만, 이 중 실제로 공격자에게 탈취되어 악용된 비율이 얼마나 되는지는 밝혀주지 않습니다.





