Semgrep publiserte 1. mai en advarsel om at PyPI-pakken lightning ble kompromittert i versjonene 2.6.2 og 2.6.3, lagt ut 30. april. Pakken er kjent som PyTorch Lightning og brukes av ML-utviklere som finjusterer LLM-er, trener bildemodeller eller setter opp diffusjons- og tidsserie-pipelines. pip install lightning er nok til å aktivere den. Pakken inneholder en skjult _runtime-katalog som starter en obfuskert JavaScript-payload på 14,8 MB ved import.
Det uvanlige er hvordan skadevaren fester seg etter første kjøring. Den skriver .claude/settings.json med en SessionStart-hook som matcher * i hvert repo den får skrivetilgang til. Hver gang en utvikler åpner Claude Code i et infisert repo, kjører node .vscode/setup.mjs automatisk uten brukerhandling. En parallell hook lander i .vscode/tasks.json som en runOn: folderOpen-task. Begge laster ned Bun 1.3.13 i stillhet hvis runtime mangler, og kjører router_runtime.js derfra.
«Dette kan være blant de første dokumenterte tilfellene av at skadevare misbruker Claude Codes hook-system i et reelt angrep» — Semgrep-forskerne, 1. mai 2026
Payload-en stjeler legitimasjon på flere fronter samtidig. Den scanner 80+ kjente filstier etter ghp_-, gho_- og npm_-tokens, dumper miljøvariabler, kjører gh auth token, og leser GitHub Actions Runner.Worker-prosessen for å hente alle hemmeligheter med isSecret: true. På skysiden enumererer den AWS Secrets Manager og SSM Parameter Store, Azure Key Vault via DefaultAzureCredential, og GCP Secret Manager. Eksfiltreringen går gjennom fire parallelle kanaler: HTTPS POST til C2, GitHub commit search som dead-drop, attacker-eide offentlige repoer, og push til offerets eget repo via ghs_-tokens.
Kampanjen er en variant av Mini Shai-Hulud-ormen som rammet npm tidligere. Inngangspunktet er nytt: fra PyPI til npm via stjålne publiseringstokens. Hvis skadevaren finner npm publish-credentials, injiserer den setup.mjs i hver pakke tokenet kan publisere til, setter scripts.preinstall til å kjøre dropperen, bumper patch-versjonen og republiserer. En GitHub-workflow kalt «Formatter» blir også pushet hvis tokenet har skrivetilgang. Workflowen dumper alle repo-secrets via ${{ toJSON(secrets) }} og laster dem opp som «format-results»-artifact.
For norske ML-utviklere er konsekvensen brutalt enkel: enhver maskin som importerte de to versjonene mens de lå ute, må behandles som fullstendig kompromittert. Det inkluderer både utviklerlaptopper og CI-runners. Reinstall holder ikke. Du må anta at GitHub-tokens, AWS/Azure/GCP-credentials og npm-publiseringsnøkler er ute.
Hva bør du gjøre?
- Kjør
pip show lightningpå alle utviklermaskiner og CI-runners. Hvis 2.6.2 eller 2.6.3 dukker opp, behandle maskinen som kompromittert. - Roter alle tokens som har vært i miljøet siden 30. april: GitHub Personal Access Tokens, npm-tokens, AWS-nøkler, Azure-secrets og GCP service accounts.
- Søk i alle repoer etter
.claude/settings.jsonmed ukjent SessionStart-hook, samt.vscode/tasks.jsonmedfolderOpen-tasks som peker motsetup.mjs. Slett dem. - Søk på GitHub etter commit-meldinger med prefiks
EveryBoiWeBuildIsAWormyBoiog repoer med beskrivelse «A Mini Shai-Hulud has Appeared». Det er attacker-eide eksfiltreringspunkter du kan rapportere.
lightning