Hvordan skiller du et automatisert kartleggingsangrep fra helt vanlig API-bruk når hver enkelt forespørsel ser lovlig ut?
Datadog Security Labs sporer flere overlappende kampanjer som lister opp GitHub-organisasjoner, repoer og brukerkontoer gjennom GitHubs API. Kontoene er ikke nye. De ble opprettet to til fem år før bruk og lå bevisst i dvale for å bygge alder og troverdighet, slik at trafikken deres glir inn i normal API-bruk framfor å utløse varsler.
«Operatørene bruker automatiserte skrapeverktøy med egendefinerte eller legitimt klingende user agents, og lener seg på GitHub-spøkelseskontoer som ofte er flere år gamle, eller på kompromitterte OAuth-tokener og personlige tilgangstokener fra ekte brukere» — Julie Agnes Sparks, senior sikkerhetsingeniør i Datadog
Kampanjen kombinerer automatiserte skannere, over 50 kontoer i dvale og titalls ekte kontoer der personlige tilgangstokener er lekket eller stjålet. Store deler av GitHubs API kan nås uten autentisering, så spørringene returnerer det angriperen trenger uten at noe autentiseringsspor oppstår.
Spørringene henter offentlige repoer i en organisasjon, går gjennom hvem brukerne følger og følges av, lister gists, stjernemerkede repoer og organisasjonsmedlemskap, og kjører GraphQL-spørringer mot offentlige objekter. Til sammen tegner det et kart over hvem som jobber med hva, og hvem som endrer hvilke prosjekter.
I de fleste tilfellene stopper det ved offentlig data. I minst ett tilfelle gikk operatørene videre og klonet et privat repo som tilhørte én organisasjon.
«Hver for seg er de fleste av disse forespørslene uinteressante. De treffer offentlige endepunkter, autentiserer rent eller ikke i det hele tatt, og returnerer vellykkede svar» — Datadog Security Labs
Faren ligger i summen: en gruppe kontoer som beveger seg synkront på tvers av flere selskapers organisasjoner, med versjonert egenutviklet verktøy, over uker. For deg som bygger i åpne repoer er den offentlige grafen din også rekognoseringsmateriale. Hvem du følger, hva du stjernemerker og hvilke prosjekter du committer til, er alt sammen lesbart uten innlogging.
Hva bør du gjøre?
- Roter personlige tilgangstokener og sett kort utløpsdato. Tokener uten utløp er den enkleste veien inn.
- Gå gjennom OAuth-apper og installerte GitHub-apper med tilgang til organisasjonen, og fjern dem ingen lenger kjenner igjen.
- Se etter mønsteret framfor enkeltforespørselen. Samme user agent som treffer flere organisasjoner over uker er signalet, ikke ett enkelt API-kall.