Analisi

Laravel-Lang compromessa: oltre 700 versioni PHP infettate da uno stealer cross-platform

Dario Fadda 25 Maggio 2026

Un sofisticato attacco alla supply chain ha compromesso quattro pacchetti PHP appartenenti al progetto Laravel-Lang, iniettando codice malevolo in oltre 700 versioni pubblicate in rapida successione tra il 22 e il 23 maggio 2026. Il payload — uno stealer cross-platform da quasi 6.000 righe di codice — è stato progettato per drenare credenziali cloud, token CI/CD, wallet di criptovalute e segreti di repository da qualsiasi sistema che utilizzi queste librerie di localizzazione diffusissime nell’ecosistema Laravel.

La natura dell’attacco: tag git riscritti, non codice sorgente

Quello che rende questa campagna particolarmente insidiosa è la tecnica adottata: gli attaccanti non hanno modificato il codice sorgente del repository, bensì hanno riscritto ogni tag git esistente in ciascun repository per puntare a commit malevoli appartenenti a un fork controllato dagli aggressori. Questo approccio bypassa molti controlli di integrità tradizionali basati sull’analisi dei diff del codice principale.

GitHub consente ai tag di versione di puntare a commit di fork dello stesso repository. Gli attaccanti hanno sfruttato questa funzionalità per sostituire silenziosamente tutti i tag — compresi quelli di versioni storicamente sicure — con riferimenti a commit malevoli nel fork. Il risultato pratico è che anche un progetto che non aggiornava le dipendenze da mesi si ritrovava improvvisamente a scaricare codice ostile.

I ricercatori di Socket, Aikido Security, StepSecurity e Snyk hanno analizzato in dettaglio l’incidente, confermando che le versioni compromesse sono state pubblicate in rapida successione — alcune a pochi secondi di distanza l’una dall’altra — il 22 e il 23 maggio 2026, con oltre 700 versioni identificate tra i quattro pacchetti interessati. La velocità di pubblicazione indica quasi certamente un processo automatizzato.

I pacchetti compromessi

I quattro pacchetti colpiti sono componenti fondamentali dell’ecosistema di localizzazione per applicazioni Laravel:

  • laravel-lang/lang — le traduzioni principali per decine di lingue
  • laravel-lang/http-statuses — messaggi di stato HTTP localizzati
  • laravel-lang/attributes — traduzioni degli attributi dei form
  • laravel-lang/actions — azioni comuni localizzate

Si sospetta che gli attaccanti abbiano ottenuto accesso a credenziali a livello di organizzazione, a sistemi di automazione del repository o all’infrastruttura di rilascio del progetto. Packagist ha risposto tempestivamente rimuovendo le versioni malevole e mettendo temporaneamente in stato di “unlisted” i pacchetti interessati per prevenire ulteriori installazioni.

Il meccanismo di esecuzione automatica: autoloader Composer

La funzionalità malevola è contenuta in un file denominato src/helpers.php, incorporato nei tag di versione compromessi. Il file è registrato nel campo autoload.files del composer.json di ciascun pacchetto. Questa scelta tecnica è devastante: qualsiasi applicazione PHP che esegua require __DIR__.'/vendor/autoload.php' all’avvio — ovvero praticamente ogni applicazione Laravel, Symfony, PHPUnit o framework PHP moderno — esegue automaticamente il payload senza che sia necessaria alcuna chiamata di metodo esplicita.

“Il backdoor viene eseguito automaticamente ad ogni richiesta PHP gestita dall’applicazione compromessa”, ha spiegato Socket nella propria analisi. Lo script genera un identificatore univoco per host (un hash MD5 che combina il percorso della directory, l’architettura del sistema e l’inode) per garantire che il payload si attivi una sola volta per macchina, limitando le esecuzioni ridondanti e aiutando il malware a restare non rilevato dopo l’esecuzione iniziale.

Payload: uno stealer modulare con 15 collector specializzati

Il dropper contatta il server flipboxstudio[.]info per recuperare il payload principale: uno stealer PHP cross-platform da circa 5.900 righe di codice, organizzato in 15 moduli collector specializzati. Su Windows viene distribuito un launcher Visual Basic Script eseguito tramite cscript; su Linux e macOS il payload viene eseguito tramite exec().

L’elenco di ciò che lo stealer è in grado di raccogliere è impressionante per ampiezza e profondità:

  • Cloud provider: ruoli IAM AWS e documenti di identità dell’istanza, credenziali default di Google Cloud, token di accesso Microsoft Azure, profili service principal, token di account DigitalOcean, Heroku, Vercel, Netlify, Railway, Fly.io
  • Container e orchestrazione: token Service Account Kubernetes, configurazioni Helm registry, token HashiCorp Vault, auth token Docker, configurazioni cluster Kubernetes
  • CI/CD e DevOps: token e configurazioni di Jenkins, GitLab Runner, GitHub Actions, CircleCI, TravisCI, ArgoCD
  • Criptovalute: seed phrase e file di portafogli Electrum, Exodus, Atomic, Ledger Live, Trezor, Wasabi, Sparrow; dati di estensioni browser MetaMask, Phantom, Trust Wallet, Ronin, Keplr, Solflare, Rabby
  • Browser: cronologia, cookie e login data da Chrome, Edge, Firefox, Brave, Opera, usando un eseguibile Windows embedded in Base64 che bypassa Chromium’s App-Bound Encryption (ABE)
  • Password manager: vault locali e dati di estensioni 1Password, Bitwarden, LastPass, KeePass, Dashlane, NordPass
  • Comunicazioni e sessioni: token di Discord, Slack, Telegram; sessioni PuTTY/WinSCP, Windows Credential Manager, sessioni RDP
  • File sensibili: chiavi private SSH, credenziali Git, history di shell, file .env, wp-config.php, docker-compose.yml, variabili d’ambiente del processo PHP
  • Email e FTP: dati Outlook, Thunderbird, FileZilla, WinSCP, CoreFTP
  • VPN: configurazioni OpenVPN, WireGuard, NetworkManager, NordVPN, ExpressVPN, CyberGhost, Mullvad

Dopo aver raccolto tutto il materiale disponibile, il payload cripta i risultati con AES-256 e li trasmette all’endpoint flipboxstudio[.]info/exfil, dopodiché si cancella dal disco per limitare le tracce forensi.

IoC (Indicatori di Compromissione)

# Dominio C2 principale
flipboxstudio[.]info
flipboxstudio[.]info/exfil
# File malevolo nei pacchetti
src/helpers.php  (registrato in autoload.files di composer.json)
# Pacchetti PHP compromessi (verificare versioni 22-23 maggio 2026)
laravel-lang/lang
laravel-lang/http-statuses
laravel-lang/attributes
laravel-lang/actions
# Verifica presenza del file malevolo
find ./vendor -name "helpers.php" -path "*/laravel-lang/*" -exec grep -l "flipboxstudio" {} \;

Contesto: una campagna in crescita nell’ecosistema PHP

Questo attacco non è isolato. Negli ultimi mesi si è assistito a un’ondata di compromissioni delle supply chain nei principali registri di pacchetti. In particolare, la campagna Mini Shai-Hulud attribuita al gruppo TeamPCP (UNC6780) ha colpito pacchetti npm di TanStack, Mistral AI, Guardrails AI e OpenSearch, diffondendosi come un vero e proprio worm grazie all’abuso di token OIDC GitHub e al meccanismo di trusted publishing di npm. Il fatto che ora un attacco simile colpisca l’ecosistema PHP/Composer dimostra che i gruppi criminali stanno sistematicamente esplorando tutti i principali registri di pacchetti come vettori di attacco.

La tecnica di riscrivere i tag git invece di modificare il codice sorgente rappresenta un’evoluzione tattica significativa: bypassando i controlli diff tradizionali, rende molto più difficile il rilevamento automatico da parte degli strumenti di analisi della composizione software (SCA).

Due righe per i difensori

  • Verificare immediatamente se le applicazioni Laravel utilizzano uno dei quattro pacchetti compromessi e controllare le versioni installate durante il periodo 22-23 maggio 2026
  • Ruotare tutte le credenziali (AWS, GCP, Azure, GitHub, npm, CI/CD, database) su qualsiasi sistema che abbia eseguito codice con le versioni infette
  • Non revocare immediatamente i token sospetti prima di aver isolato e acquisito un’immagine forense del sistema: il malware include meccanismi di risposta alla revoca
  • Bloccare il dominio flipboxstudio[.]info a livello di firewall/DNS
  • Implementare controlli di integrità sui tag git (verificare le firme dei commit) e considerare il pinning degli hash SHA degli artefatti nel composer.lock
  • Adottare strumenti SCA capaci di rilevare tag git riscritti, non solo modifiche al codice sorgente
  • Aggiornare a versioni sicure dei pacchetti rilasciate dal team Laravel-Lang dopo la rimozione delle versioni malevole da Packagist

💬 [[ unisciti alla discussione! ]]


Questo è un blog del Fediverso: puoi trovare quindi questo articolo ovunque con @blog@insicurezzadigitale.com e ogni commento/risposta apparirà qui sotto.

Se vuoi commentare su Laravel-Lang compromessa: oltre 700 versioni PHP infettate da uno stealer cross-platform, utilizza la discussione sul Forum.
Condividi esempi, IOCs o tecniche di detection efficaci nel nostro 👉 forum community