En ondsinnet versjon av PyTorch Lightning ble publisert som lightning==2.6.3 (py3-none-any wheel) på PyPI og kjørte en skjult eksekveringskjede ved import lightning. SecurityAffairs rapporterte 6. mai at pakken lastet ned JavaScript-runtimen Bun og eksekverte en 11,4 MB tungt obfuskert JavaScript-payload som Microsoft har klassifisert som ShaiWorm — en credential stealer som målrettet .env-filer, API-nøkler, GitHub-tokens og passord lagret i Chrome, Firefox og Brave.
Malwaren samlet også access keys for AWS, Azure og Google Cloud, og åpnet for arbitrær kommando-eksekvering på infiserte maskiner. Lightning AI fjernet pakken sent i april og advarte alle som hadde brukt versjonen om å rotere alle credentials umiddelbart. Microsoft Defender oppdaget og blokkerte trusselen, og selskapet sier omfanget var begrenset til et lite antall enheter.
«Observed activity remains limited to a small number of devices and appear contained to a narrow set of environments.» — Microsoft, advisory om ShaiWorm
Lightning AI undersøker fortsatt hvordan bakdøren havnet i build-pipelinen. Mistenkte vektorer er kompromittert utviklerkonto, kapret build-system eller en tredjeparts-avhengighet. Hendelsen passer i et større mønster: angripere går målrettet etter populære KI-pakker fordi treffraten på utviklerne er høy.
For norske team som bygger ML-pipelines er det viktigste her ikke at Lightning ble kompromittert, men at angrepskjeden brukte Bun til å hente og kjøre JavaScript-kode fra Python. Det burde ingen import fra et trening-rammeverk gjøre. Det er en nyttig signatur for å bygge runtime-overvåkning rundt egne ML-jobber.
Hva bør du gjøre?
- Sjekk
pip listogrequirements.txtpå alle maskiner og CI-runners; hvis lightning 2.6.3 har vært installert, roter alle AWS-, Azure-, GCP-, GitHub- og browser-credentials. - Pinn versjoner i requirements og bruk hash-pinning der det er kritisk; kjør
pip install --require-hashes. - Legg på runtime-overvåkning som flagger Bun, Node eller andre JS-runtimes som spawnes fra Python-prosesser i ML-jobber.
- Kjør Microsoft Defender eller annen EDR med oppdaterte signaturer på utviklermaskiner som installerer KI-pakker fra PyPI.