Vertel me je geheimen zonder me je geheimen te vertellen

De titel van dit artikel klinkt waarschijnlijk als het onderschrift van een meme. In plaats daarvan is dit een reëel probleem dat de technici van GitGuardian moesten oplossen bij het implementeren van de mechanismen voor hun nieuwe HasMySecretLeaked-service. Ze wilden ontwikkelaars helpen erachter te komen of hun geheimen (wachtwoorden, API-sleutels, privésleutels, cryptografische certificaten, enz.) hun weg hadden gevonden naar openbare GitHub-repository’s. Hoe konden ze een enorme bibliotheek met geheimen uit openbaar beschikbare GitHub-repository’s en hun geschiedenis doorzoeken en deze vergelijken met jouw geheimen zonder dat je gevoelige informatie openbaar hoeft te maken? Dit artikel zal je vertellen hoe.

Ten eerste: als we de massa van een bit gelijk zouden stellen aan die van één elektron, zou een ton aan gegevens ongeveer 121,9 biljard petabytes aan gegevens zijn bij standaard zwaartekracht van de aarde, of 39,2 miljard miljard miljard dollar aan MacBook Pro-opslagupgrades (meer dan alle het geld ter wereld). Dus als dit artikel beweert dat GitGuardian een “ton” aan openbare commit-gegevens van GitHub heeft gescand, is dat figuurlijk en niet letterlijk.

Maar ja, ze hebben een “ton” aan publieke commits en essenties van GitHub gescand, de commit-geschiedenis doorzocht, en gevonden miljoenen van geheimen: wachtwoorden, API-sleutels, privésleutels, cryptografische certificaten en meer. En nee, ‘miljoenen’ is niet figuurlijk. In 2022 vonden ze er letterlijk meer dan 10 miljoen.

Hoe kon GitGuardian het voor ontwikkelaars en hun werkgevers mogelijk maken om te zien of hun huidige en geldige geheimen tot die meer dan 10 miljoen behoorden, zonder eenvoudigweg miljoenen geheimen te publiceren, waardoor het voor bedreigingsactoren gemakkelijker werd om ze te vinden en te oogsten, en een heleboel geesten in de steek te laten uit veel flessen? Eén woord: vingerafdrukken.

Na zorgvuldige evaluatie en testen ontwikkelden ze een geheim vingerafdrukprotocol dat het geheim codeert en hashes, en vervolgens wordt slechts een gedeeltelijke hash gedeeld met GitGuardian. Hiermee zouden ze het aantal potentiële matches kunnen beperken tot een beheersbaar aantal zonder voldoende kennis van de hash te hebben om deze ongedaan te maken en te decoderen. Om de veiligheid verder te garanderen, hebben ze de toolkit voor het coderen en hashen van het geheim aan de clientzijde geplaatst.

Als u de HasMySecretLeaked-webinterface gebruikt, kunt u een Python-script kopiëren om de hash lokaal te maken en de uitvoer gewoon in de browser plaatsen. U hoeft het geheim zelf nooit ergens neer te zetten waar het door de browser kan worden verzonden en u kunt eenvoudig de 21 regels code bekijken om voor uzelf te bewijzen dat het niets verzendt buiten de terminalsessie die u hebt geopend om het script uit te voeren. Als dat nog niet genoeg is, open dan de F12-ontwikkelaarstools in Chrome of een andere browser en ga naar het paneel ‘Netwerk’ om te controleren welke informatie de webinterface stroomopwaarts verzendt.

Als u de open source ggshield CLI gebruikt, kunt u de CLI-code inspecteren om te zien wat er gebeurt als u de opdracht hmsl gebruikt. Wilt u nog meer zekerheid? Gebruik een verkeersinspecteur zoals Fiddler of Wireshark om te zien wat er wordt verzonden.

De technici van GitGuardian wisten dat zelfs klanten die hen vertrouwden, bang zouden zijn om een ​​API-sleutel of een ander geheim in een vak op een webpagina te plakken. Voor zowel de veiligheid als de gemoedsrust van iedereen die de dienst gebruikt, hebben ze ervoor gekozen zo transparant mogelijk te zijn en een zo groot mogelijk deel van het proces onder controle van de klant te plaatsen. Dit gaat verder dan hun marketingmateriaal en gaat over de ggshield-documentatie voor de hsml-opdracht.

GitGuardian deed een extra stap om ervoor te zorgen dat mensen die hun HasMySecretLeaked-checker gebruiken, de daadwerkelijke geheimen niet hoeven te delen om te zien of ze hebben gelekt. En het heeft zijn vruchten afgeworpen. In de eerste paar weken dat het live was, werden meer dan 9.000 geheimen gecontroleerd.

Als uw geheimen al publiekelijk zijn onthuld, is het beter om het te weten dan niet. Ze zijn misschien nog niet uitgebuit, maar het is waarschijnlijk slechts een kwestie van tijd. U kunt maximaal vijf per dag gratis controleren via de HasMySecretLeaked-checker via internet, en nog meer met behulp van de GitGuardian-schild-CLI. En zelfs als u niet wilt zien of uw geheimen zijn gelekt, moet u naar hun code en methoden kijken om u te inspireren bij uw inspanningen om het voor uw klanten gemakkelijker te maken gevoelige informatie te delen zonder de informatie zelf te delen.

Thijs Van der Does