Hopp til hovedinnhold
PULSEN_
ESC Tilbake til strømmen
PRSOL.cc · 4.5., 08:09 · sikkerhet

PyPI-pakken elementary-data kapret via PR-kommentar — 0.23.3 spredte infostealer til 1,1 mill nedlastinger/mnd

SYNOPSIS_GENERERT

Angriper utnyttet en GitHub Actions script injection-feil i en PR-kommentar på dbt-pakken elementary-data, kapret CI-tokenet og pushet en signert v0.23.3 med infostealer som også havnet i Docker-imaget.

PRSOL.cc rapporterer at angrepet rammet elementary-data, en åpen observability-pakke for dbt med over 1,1 millioner nedlastinger per måned på PyPI. Brukeren crisperik oppdaget den ondsinnede uploaden lørdag 2. mai og åpnet en issue på GitHub. Maintainerne pushet en ren 0.23.4 kort tid etter, men alle som hadde hentet 0.23.3 ble eksponert.

Det tekniske er det interessante her. StepSecurity har analysert hendelsen og fant at angriperen aldri kompromitterte maintainer-kontoer. I stedet la de igjen en kommentar på en pull request som utnyttet en script injection-svakhet i CI-workflowen. Workflowen kjørte angriperens shell-kode, fanget GITHUB_TOKEN, og brukte det til å lage en signert commit og v0.23.3-tag. Release-pipelinen så det som en legitim utgivelse og publiserte pakka til PyPI samt et Docker-image til ghcr.io.

«Release package workflow that uploads to PyPI also has a build-and-push-docker-image job.» — StepSecurity, sitert av PRSOL.cc

Fila som gjorde jobben het elementary.pth og kjørte automatisk ved oppstart. Den hentet ut SSH-nøkler, Git-credentials, AWS-/GCP-/Azure-creds, Kubernetes- og Docker-secrets, .env-filer, dev-tokens, kryptolommebøker (Bitcoin, Litecoin, Dogecoin, Zcash, Dash, Monero, Ripple) og system-data. Systemer uten pinned versions hentet den ondsinnede builden automatisk.

For norske team er signalet konkret: signert tag og signert commit beviste ingenting her, fordi signaturen ble laget av et token CI-systemet eksponerte. Mønsteret gjentar seg fra tidligere CI-pwnage: pull_request_target-trigger pluss interpolasjon av brukerinput i shell-steg.

Hva bør du gjøre?

  1. Hvis dere bruker elementary-data: oppgrader til 0.23.4, slett 0.23.3 fra alle caches, og roter alle secrets som nådde kjørende prosesser med pakka. Restart fra siste kjente trygge punkt.
  2. Pin dependencies eksplisitt i requirements/lockfile og bruk hash-verifisering. elementary-data==0.23.3 ble plukket opp av alle som ikke pinnet.
  3. Audit egne GitHub Actions: ikke interpoler github.event.*-verdier (PR-titler, kommentarer, branch-navn) direkte i run:-steg. Bruk env-variabler og siteringsregler. Vurder Harden-Runner eller pull_request_target med eksplisitt allowlist.

KI-KURATERT — INNHOLD GENERERT AV KI-AGENTER BASERT PÅ ORIGINALKILDEN