Truffle Security vindt 543.699 werkende credentials in publieke GitHub-repo's
Truffle Security heeft 224 miljoen publieke GitHub-repositories doorzocht en daarin 543.699 unieke credentials gevonden die bij een test eind juli nog werkten. De mediane sleutel stond op dat moment al 784 dagen in een publieke default branch.
Hoe het onderzoek is opgezet
Het bedrijf gebruikte volgens zijn onderzoeksrapport niet GitHub zelf als bron, maar The Stack v3: een dataset van publieke code die is samengesteld om taalmodellen te trainen. Die crawl sloot op 7 augustus 2025 en omvat 224.553.295 repositories en 58.467.468.698 bestanden.
Op 27 en 28 juli 2026 testte Truffle elke gevonden kandidaat tegen de dienst die hem had uitgegeven. 543.699 kwamen terug als werkend, afkomstig uit 1.103.438 losse vindplaatsen — dezelfde sleutel duikt vaak op in forks en kopieën. Dat is meer dan het dubbele van de 221.303 werkende credentials die het bedrijf eerder aantrof in de trainingsdata van Hugging Face.
De leeftijden zijn opmerkelijk: het negentigste percentiel ligt op 6,3 jaar en de oudste werkende vondst is een set databasegegevens in de configuratie van een Erlang-webserver, voor het laatst aangeraakt op 13 juni 2009 en 16,1 jaar later nog steeds geldig. 2.636 werkende credentials komen uit bestanden van vóór 2015.
Push protection werkt, maar dekt de helft niet
GitHub maakte secret scanning-alerts op 28 februari 2023 gratis voor publieke repositories, bracht push protection in mei 2023 naar general availability en zette het op 29 februari 2024 standaard aan. Toch lekte 199.843 van de werkende credentials — 36,8 procent — ná die laatste datum.
Dat komt doordat de blokkade alleen patronen tegenhoudt die precies genoeg zijn om veilig op te blokkeren: ruim 200 tokentypen van meer dan 180 providers. Connection strings en private keys vallen onder generieke patronen die standaard uit staan, en Google API-keys worden bewust niet geblokkeerd omdat een Gemini-key en een Maps-key dezelfde AIzaSy-prefix hebben. Truffle vond 31.374 werkende Gemini-keys. Opgeteld is 51,8 procent van alle werkende credentials een vorm die een standaard ingestelde publieke repository gewoon accepteert.
Waar de blokkade wél geldt, doet hij zijn werk. In de twaalf maanden rond de uitrol daalde de lekdichtheid in de beschermde categorieën met 53 procent, tegen 7 procent in de onbeschermde. De totale dichtheid blijft intussen stijgen: van 3,72 werkende credentials per miljoen bestanden in 2014 naar 11,62 in 2025, het hoogste punt in de dataset.
Het verschil zit in intrekken, niet in blokkeren
De scherpste conclusie van het onderzoek komt uit de vergelijking per provider. Van 101.886 gecommitte npm-tokens werkte er nog precies één. Bij GitHub-tokens waren dat 260 van 73.048, bij Hugging Face 15 van 30.437.
Daar tegenover: van 126.963 Google Cloud service accounts werkten er nog 69.041, en van 12.985 Postgres-connectiestrings nog 11.465 — 88 procent. Bij MySQL 1.806 van de 2.421.
Alle sleutels in die lijst stonden even open en publiek. Wat ze onderscheidt is of de uitgever een geautomatiseerde kill switch heeft die een gelekt token intrekt. Waar die bestaat, overleeft bijna niets; waar niemand intrekt, overleeft bijna alles. Het advies van Truffle is dan ook gericht op die stap: roteer blootgestelde credentials direct, ruim repositories op, scan de history en zet automatische expiratie op actieve secrets.