allarme packagist pacchetti laravel rat php composer

Minaccia su Packagist: scoperti pacchetti Laravel che nascondono un RAT PHP cifrato

Pacchetti Packagist Laravel sono stati identificati da Socket.dev come veicolo di un RAT PHP cifrato distribuito tramite dipendenze Composer. Il 3 marzo 2026 il team di ricerca ha rivelato che tre librerie pubblicate dall’utente nhattuanbl installano in silenzio una backdoor completa con canale C2 criptato. I pacchetti, camuffati da utility tipiche dell’ecosistema Laravel, sfruttano nomi credibili e meccanismi di auto-discovery per attivarsi automaticamente su qualsiasi applicazione che li includa, direttamente o tramite dipendenze transitive.

nhattuanbl e il pattern di pubblicazione malevolo

Annuncio

I pacchetti incriminati seguono uno schema studiato per apparire legittimi. nhattuanbl/lara-helper versione 5.4.7 e nhattuanbl/simple-queue versione 1.5 contengono lo stesso payload byte-per-byte. nhattuanbl/lara-swagger versione 2.0 appare formalmente pulito, ma dichiara una dipendenza hard da lara-helper@dev-master, scaricando così automaticamente il RAT.

image 137
Il profilo GitLab dell’autore della minaccia nhattuanbl's(a sinistra) mostra “Questo utente ha un profilo privato”. Il suo profilo GitHub (a destra) mostra in modo simile “L’attività di @nhattuanbl è privata”.

L’account nhattuanbl esiste dal dicembre 2015, dettaglio che aumenta la fiducia iniziale degli sviluppatori. Nel tempo sono stati pubblicati anche pacchetti apparentemente puliti con naming coerente, costruendo una reputazione credibile. Questo elemento rafforza il rischio tipico della supply chain: un account storico può veicolare codice malevolo senza destare sospetti immediati.

RAT PHP cifrato: attivazione silenziosa e persistenza

Il payload identico è nascosto in src/helper.php e si attiva all’avvio dell’applicazione o durante la fase di autoload. Il codice utilizza tecniche di offuscamento avanzate come goto spaghetti, codifica hex e octal e identificatori randomizzati per ostacolare l’analisi statica.

image 138
Minaccia su Packagist: scoperti pacchetti Laravel che nascondono un RAT PHP cifrato 6

Una volta caricato, il RAT genera un processo in background staccato dal processo principale. Su sistemi Unix avvia php con nohup e redirezione verso /dev/null, mentre su Windows utilizza start /B. Un file di lock nella directory temporanea impedisce istanze multiple e scade dopo 15 minuti, garantendo stabilità operativa.

image 139
lara-swaggerrichiede composer.jsonesplicitamente nhattuanbl/lara-helperdev-master. L’installazione di questo pacchetto richiama silenziosamente il RAT.

Il malware gira con gli stessi permessi dell’applicazione web. Questo significa accesso diretto a credenziali database, file .env, chiavi API e configurazioni sensibili. In un contesto Laravel, dove molte informazioni critiche sono archiviate in chiaro nell’ambiente applicativo, l’impatto è potenzialmente devastante.

Canale C2 e cifratura AES-128-CTR

Il RAT stabilisce una connessione TCP persistente verso helper.leuleu.net sulla porta 2096. Alla connessione iniziale invia un profilo completo del sistema che include tipo e versione del sistema operativo, hostname, user ID, UUID della macchina e directory corrente. Il traffico è cifrato con AES-128-CTR utilizzando una chiave hardcoded esCAmxUoJkIjTV0n e un IV random da 16 byte per ogni messaggio. Il protocollo prevede un header di lunghezza a 4 byte seguito da IV e JSON cifrato. Il client ritenta la connessione ogni 15 secondi in caso di fallimento e invia heartbeat ping ogni 60 secondi, mantenendo attivo il canale C2. Questa implementazione mostra una maturità tecnica elevata. Non si tratta di un semplice web shell, ma di un backdoor persistente con protocollo strutturato e cifratura robusta.

Comandi remoti e controllo completo

L’operatore remoto dispone di un set di comandi esteso. Il comando cmd esegue shell classiche, mentre powershell lancia comandi PowerShell. Il comando run avvia processi in background. Il RAT verifica la direttiva disable_functions di PHP e sceglie dinamicamente tra popen, proc_open o altre funzioni disponibili per garantire resilienza. Il comando download legge file dal disco e restituisce il contenuto in base64. Il comando upload scrive file sul sistema con permessi chmod 0777. Il comando screenshot utilizza imagegrabscreen per catturare lo schermo e restituire un PNG in base64. Il comando stop chiude il socket e termina il processo. Queste funzionalità trasformano qualsiasi applicazione Laravel compromessa in un punto di accesso remoto completo, con possibilità di movimento laterale e furto di dati.

Supply chain Composer e rischio dipendenze transitive

La scoperta mette in evidenza un problema strutturale nelle catene di dipendenze Composer. Le dipendenze transitive, come nel caso di lara-swagger, possono introdurre codice malevolo anche quando il pacchetto principale appare legittimo. L’utilizzo del vincolo dev-master bypassa il pinning delle versioni stabili e rappresenta un vettore particolarmente pericoloso in ambienti di produzione. Questo tipo di configurazione consente l’inclusione automatica di codice aggiornato senza revisione preventiva. Socket raccomanda di trattare ogni dipendenza con lo stesso livello di scrutinio delle installazioni dirette. In un ecosistema come quello PHP, dove migliaia di pacchetti vengono inclusi automaticamente, il rischio sistemico è elevato.

Strumenti di difesa e raccomandazioni operative

Socket.dev ha identificato il rischio grazie al proprio scanner che classifica nhattuanbl/lara-helper come malware noto. L’azienda ha inviato richieste di takedown a Packagist, ma al momento della pubblicazione i pacchetti risultano ancora online. Socket mette a disposizione strumenti specifici per mitigare il rischio. Il GitHub App analizza le modifiche alle dipendenze nei pull request. La CLI consente di applicare regole allow/deny in CI. Socket Firewall blocca pacchetti noti malevoli anche quando arrivano tramite dipendenze transitive. L’estensione browser segnala rischi durante la valutazione dei pacchetti su Packagist. Socket MCP impedisce che tool di coding AI introducano librerie sospette. Gli sviluppatori che hanno installato nhattuanbl/lara-helper, nhattuanbl/simple-queue o nhattuanbl/lara-swagger devono verificare eventuali connessioni verso helper.leuleu.net:2096, rimuovere immediatamente i pacchetti e procedere a una rotazione completa di credenziali, chiavi API e segreti esposti.

Un monito per la comunità Laravel

I pacchetti sono stati pubblicati tra giugno e dicembre 2024, sfruttando la fiducia nel repository ufficiale Packagist. Il caso dimostra come un singolo pacchetto malevolo possa compromettere un’intera applicazione attraverso un meccanismo stealth e persistente. La comunità Laravel e più in generale l’ecosistema PHP ricevono un segnale chiaro: anche nomi generici come helper, queue o swagger possono nascondere payload sofisticati. La sicurezza della supply chain non è più un tema opzionale ma un requisito strutturale. Il RAT cifrato e il meccanismo di persistenza in background rendono il rilevamento manuale estremamente complesso. Solo strumenti di scansione avanzati e monitoraggio continuo delle dipendenze possono ridurre il rischio prima dell’installazione. Socket continua a monitorare Packagist e aggiornerà le firme dei propri scanner. Il caso evidenzia che la fiducia nel repository ufficiale non basta più: ogni dipendenza deve essere verificata con la stessa attenzione di un codice scritto internamente.

Iscriviti alla Newsletter

Non perdere le analisi settimanali: Entra nella Matrice Digitale.

Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.

Torna in alto