Hopp til hovedinnhold
PULSEN_
ESC Tilbake til strømmen
Semgrep · 2.5., 16:09 · sikkerhet

Shai-Hulud-skadevare i PyTorch Lightning på PyPI: bruker Claude Code-hooks for å spre seg

SYNOPSIS_GENERERT

PyPI-pakken «lightning» versjon 2.6.2 og 2.6.3, publisert 30. april 2026, inneholder skadevare som stjeler skytokens og injiserer SessionStart-hooks i Claude Code. Semgrep mener det er første dokumenterte tilfelle av at Claude Codes hook-system misbrukes i et reelt angrep.

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?

  1. Kjør pip show lightning på alle utviklermaskiner og CI-runners. Hvis 2.6.2 eller 2.6.3 dukker opp, behandle maskinen som kompromittert.
  2. 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.
  3. Søk i alle repoer etter .claude/settings.json med ukjent SessionStart-hook, samt .vscode/tasks.json med folderOpen-tasks som peker mot setup.mjs. Slett dem.
  4. Søk på GitHub etter commit-meldinger med prefiks EveryBoiWeBuildIsAWormyBoi og repoer med beskrivelse «A Mini Shai-Hulud has Appeared». Det er attacker-eide eksfiltreringspunkter du kan rapportere.
>_ NØKKELTALL
2.6.2 og 2.6.3: kompromitterte versjoner av PyPI-pakken lightning
30. april 2026: dato pakkene ble publisert
14,8 MB: størrelse på den obfuskerte JavaScript-payloaden
80+: filstier som scannes for credentials på hver infiserte maskin

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