Een geautomatiseerde campagne met de naam Gheist gebruikt gestolen GitHub-tokens om geheimen uit privérepositories te stelen via de logs van GitHub Actions. Cloudsecuritybedrijf Wiz volgt de campagne al sinds 15 september en noemde haar naar de user agent “gheist” die de tool gebruikt. Wiz heeft de activiteit inmiddels bij GitHub gemeld.
De aanvalsketen is doordacht eenvoudig. Voor elke repository die een gestolen token kan bereiken, maakt de tool een branch aan met een naam als “ci-sync-” gevolgd door zes willekeurige tekens. Die branch bevat één commit die alleen het bestand .github/workflows/sync-check.yml toevoegt, met het onschuldig ogende commitbericht “ci: sync config”. Zodra die commit wordt gepusht, start de workflow automatisch en print die alle omgevingsvariabelen en secrets die de job kan lezen, gecodeerd in base32. GitHub maskeert secrets niet betrouwbaar nadat ze zo zijn gecodeerd, waardoor de waarden gewoon leesbaar in het logbestand staan. Een variant van de tool draait ook een losse job per deployment environment, waardoor ook de vaak gevoeligere productiecredentials van die omgevingen worden blootgelegd.
Daarna downloadt de tool het log via de GitHub-API en verwijdert de run enkele seconden later. Er is geen aparte aanvallersserver nodig, want de data gaat via GitHub zelf naar buiten. Het verwijderen van de branch of de run maakt de blootstelling niet meer ongedaan.
De aanvallen zijn geslaagd bij privérepositories en bij omgevingen met GitHub Enterprise. Wiz wijst erop dat de beveiligingsmaatregel van GitHub die verdachte workflow-runs tegenhoudt tot handmatige goedkeuring, alleen geldt voor publieke repositories op github.com en niet voor GitHub Enterprise Server. Wiz herstelde meer dan 13.500 geplante branches bij meer dan 850 gecompromitteerde accounts, van persoonlijke projecten tot privérepositories van grote organisaties. Bij sommige enterprise-slachtoffers kopieerde de tool ook hele privérepositories, waarna uren later gestolen cloudcredentials AWS Secrets Manager doorzochten; waar die credentials vandaan kwamen, kon Wiz niet vaststellen. Op 24 oktober was de campagne nog actief, al was zo’n twee derde van de betrokken accounts toen niet meer beschikbaar.
Organisaties kunnen zelf controleren op branches genaamd “ci-sync-” waarin alleen sync-check.yml is toegevoegd, en op runs die binnen een minuut na afronding zijn verwijderd. Bij OIDC helpt het om cloud-auditlogs te checken op role assumptions met een ci-sync-branch als subject, ook zonder GitHub-logs. Wiz adviseert alle bereikbare secrets te roteren, de betrokken tokens in te trekken, reviewers te verplichten bij environments met productiegeheimen, en persoonlijke toegangstokens te vervangen door GitHub Apps of kortlevende fine-grained tokens.
Bron: The Hacker News
Blijf op de hoogte
Meld je aan voor de nieuwsbrief: spoedalerts bij kritieke dreigingen en een wekelijks overzicht. Geen mail achterlaten? Volg ons dan via RSS.
