Programmering

Git Hound, Truffle Hog utrydder GitHub-lekkasjer

Det er App Dev 101: Ikke hardkod API-tokens, krypteringsnøkler og brukerlegitimasjon. Men hvis du gjør det, må du sørge for å få dem ut av koden din før du forplikter deg til GitHub eller andre offentlige kodelagre.

For fire år siden introduserte GitHub en søkefunksjon som gjorde det enkelt å finne passord, krypteringsnøkler og annen sensitiv informasjon i offentlig tilgjengelige arkiver. Problemet har ikke blitt bedre; i fjor fant forskere 1500 Slack-tokens på tvers av GitHub-prosjekter, som kunne ha blitt misbrukt av andre for å få tilgang til chatter, filer og andre sensitive data som deles i private Slack-team.

Truffle Hog og Git Hound er to eksempler på tilgjengelige verktøy som hjelper administratorer og utviklere med å søke etter hemmelige nøkler som ved et uhell lekker gjennom sine prosjekter på GitHub. De tar forskjellige tilnærminger for å løse det samme problemet, men målet er det samme: Hjelp administratorer med å stoppe kryptografiske hemmeligheter fra å bli lagt ut på offentlige nettsteder.

Truffle Hog "vil gå gjennom hele forpliktelseshistorikken til hver gren, og sjekke hver forskjell fra hver forpliktelse, og evaluere shannon-entropien for både base64-tegnsettet og heksadesimalt tegnsett for hver tekstblokk som er større enn 20 tegn som består av disse tegnene. sett i hver diff, "sa verktøyets utvikler, Dylan Ayrey. Shannon-entropi, oppkalt etter matematiker Claude E. Shannon, bestemmer tilfeldighet, og høy entropi antyder at strengen sannsynligvis er i bruk for kryptografiske hemmeligheter, for eksempel et tilgangstoken eller en privat nøkkel. Truffle Hog skriver ut strenger med høy entropi som pekeadministratorer kan undersøke for å finne ut hva som er i filen. Truffle Hog er skrevet i Python og trenger bare GitPython-biblioteket for å kjøre.

Git Hound tar en annen tilnærming: Den bruker et Git-plugin skrevet i Go for å skanne filer kort før du forplikter deg til GitHub. Plugin søker etter treff til regulære uttrykk som er spesifisert i en egen fil .githound.yml, og skriver enten ut en advarsel før du tillater forpliktelsen, eller mislykkes og stopper forpliktelsen fra å fortsette. Hound kan "snuse endringer siden siste forpliktelse og passere til git-begå når den er ren," sa Ezekiel Gabrielse, verktøyets utvikler. Selv om det ville være "ganske enkelt" å sette opp sjekken i en pre-commit-krok, sa Gabrielse at pluginet gir mer fleksibilitet.

Ved å bruke vanlige uttrykk kan Git Hound håndtere et bredt spekter av sensitiv informasjon, siden listen kan inneholde legitimasjon, tilgangstokener og til og med fil- og systemnavn. Pluggen kan brukes til å snuse endringer siden siste forpliktelse, hele kodebasen eller til og med hele depothistorikken. Siden .githound.yml ikke blir lagt til GitHub-depotet, forblir regexpsene private.

Tidspunktet for sjekken er viktig, da Hound snuser koden før han forplikter seg til GitHub, og legger denne viktige sikkerhetskontrollen inn i utviklerens arbeidsflyt. Sikkerhetsverktøy som passer inn i utviklerens arbeidsflyt blir mer sannsynlig brukt til rett tid.

Det skulle ikke skje, men sensitive nøkler blir ved et uhell sendt til offentlige koder, fordi de var hardkodede i programvareprosjekter, er for hyppig. Sikkerhetsforskere fant nesten 10.000 tilgangsnøkler for Amazon Web Services og Elastic Compute Cloud-forekomster i offentlig tilgjengelige GitHub-arkiver, og fikk Amazon til å vedta seg rutinen med å skanne GitHub regelmessig for slike nøkler og tilbakekalle dem før de kan bli misbrukt.

Selv om det er flott at Amazon har tatt på seg denne oppgaven, vil mange andre typer hemmeligheter like sannsynlig bli lekket. Truffle Hog og Git Hound lar administratorer og utviklere fange feilene før de blir kostbare ulykker.

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