Programmering

Git Hound, Truffle Hog udrydder GitHub lækager

Det er App Dev 101: Undgå at kode harddisk-API-tokens, krypteringsnøgler og brugerlegitimationsoplysninger. Men hvis du gør det, skal du sørge for at få dem ud af din kode, inden du forpligter dig til GitHub eller andre offentlige kodelagre.

For fire år siden introducerede GitHub en søgefunktion, der gjorde det let at finde adgangskoder, krypteringsnøgler og anden følsom information inden for offentligt tilgængelige arkiver. Problemet er ikke forbedret; sidste år fandt forskere 1.500 Slack-tokens på tværs af GitHub-projekter, som kunne have været misbrugt af andre for at få adgang til chats, filer og andre følsomme data, der deles inden for private Slack-teams.

Truffle Hog og Git Hound er to eksempler på tilgængelige værktøjer, der hjælper administratorer og udviklere med at søge efter hemmelige nøgler, der ved et uheld lækkes gennem deres projekter på GitHub. De tager forskellige tilgange for at løse det samme problem, men målet er det samme: Hjælp administratorer med at stoppe kryptografiske hemmeligheder fra at blive sendt til offentlige websteder.

Truffle Hog "vil gennemgå hver begivenhedshistorik for hver gren og kontrollere hver forskel fra hver forpligtelse og evaluere shannon-entropien for både base64-tegnsættet og det hexadecimale tegnsæt for hver tekstblok, der er større end 20 tegn, der består af disse tegn sæt i hver diff, "sagde værktøjets udvikler, Dylan Ayrey. Shannon-entropi, opkaldt efter matematiker Claude E. Shannon, bestemmer tilfældighed, og høj entropi antyder, at strengen sandsynligvis bruges til kryptografiske hemmeligheder, såsom et adgangstoken eller en privat nøgle. Truffle Hog udskriver strenge med høj entropi, som punktadministratorer kan undersøge for at finde ud af, hvad der er i filen. Truffle Hog er skrevet i Python og har kun brug for GitPython-biblioteket for at køre.

Git Hound tager en anden tilgang: Den bruger et Git-plugin skrevet i Go til at scanne filer kort før de forpligter sig til GitHub. Pluginet søger efter matches med regulære udtryk, der er specificeret i en separat fil .githound.yml, og udskriver enten en advarsel, inden den tillader forpligtelsen, eller mislykkes og stopper forpligtelsen fra at fortsætte. Hund kan "snuse ændringer siden sidste begivenhed og videregive til git-begå, når den er ren," sagde Ezekiel Gabrielse, værktøjets udvikler. Mens det ville være "ret simpelt" at indstille checken i en pre-commit-krog, sagde Gabrielse, at pluginet giver mere fleksibilitet.

Brug af regulære udtryk lader Git Hound håndtere en bred vifte af følsomme oplysninger, da listen kan omfatte legitimationsoplysninger, adgangstokener og endda fil- og systemnavne. Pluginet kan bruges til at snuse ændringer siden sidste forpligtelse, hele codebase eller endda hele arkivhistorikken. Da .githound.yml ikke føjes til GitHub-arkivet, forbliver regexps private.

Tidspunktet for kontrollen er vigtig, da Hound snifter koden, inden den forpligter sig til GitHub, hvilket sætter denne vigtige sikkerhedskontrol i udviklerens workflow. Sikkerhedsværktøjer, der passer ind i udviklerens arbejdsgang, er mere tilbøjelige til at blive brugt på det rigtige tidspunkt.

Det skulle ikke ske, men følsomme nøgler, der ved et uheld bliver sendt til offentlige kodelagre, fordi de var hårdkodede i softwareprojekter, er for hyppig. Sikkerhedsforskere fandt næsten 10.000 adgangsnøgler til Amazon Web Services og Elastic Compute Cloud-forekomster inde i offentligt tilgængelige GitHub-opbevaringssteder, hvilket fik Amazon til at anvende den praksis at regelmæssigt scanne GitHub for sådanne nøgler og tilbagekalde dem, før de kan misbruges.

Selvom det er dejligt, at Amazon har påtaget sig denne opgave, er mange andre typer hemmeligheder lige så tilbøjelige til at blive lækket. Truffle Hog og Git Hound lader administratorer og udviklere fange fejlene, inden de bliver dyre ulykker.

$config[zx-auto] not found$config[zx-overlay] not found