L'attacco è iniziato con il compromissione dell'account Packagist dello sviluppatore PHP e DevOps dinushchathurya, avvenuta tra il 12 e il 13 luglio 2026 . Packagist è progettato per sincronizzare automaticamente le versioni dei pacchetti dai repository sorgente. Questa funzionalità è stata trasformata in un'arma: gli aggressori hanno pubblicato versioni di sviluppo "dev-main" malevole di tutti i dieci pacchetti associati all'account dello sviluppatore, che Packagist ha poi reso disponibili . I dieci pacchetti erano librerie PHP legittime, ma l'attacco non mirava ai loro utenti attraverso il codice PHP.
Il cuore dell'attacco non risiedeva nel codice PHP, che è rimasto benigno, senza hook di installazione o attività di rete sospette . Gli aggressori hanno invece iniettato 583 file di workflow GitHub Actions (.github/workflows/*.yml) nei repository sorgente dello sviluppatore. Ogni versione di pacchetto interessata conteneva tra 55 e 62 di questi file . I workflow di GitHub Actions sono file YAML che definiscono attività automatizzate, come l'esecuzione di test o il deploy del codice. Gli aggressori hanno riutilizzato questa legittima infrastruttura di automazione.
Una volta che una fork o una copia del repository compromesso attivava un workflow (ad esempio, con un evento push), il file .yml malevolo istruiva il runner Ubuntu ospitato da GitHub a :
43[.]228[.]157[.]68.Questo trasformava di fatto ogni workflow attivato in un nodo di scansione e sfruttamento, utilizzando l'infrastruttura gratuita di GitHub come piattaforma distribuita per l'attacco .
Il bersaglio della campagna era CVE-2026-41940, una vulnerabilità critica in cPanel e WebHost Manager (WHM) .
cpsrvd . Un utente non autenticato poteva inviare un'Authorization header manipolato contenente caratteri di newline. Questo permetteva di iniettare proprietà arbitrarie in un file di sessione, come user=root e hasroot=1, ottenendo di fatto accesso amministrativo root all'interfaccia WHM senza una password valida .Una volta che lo sfruttamento aveva successo su un server cPanel/WHM compromesso, il payload post-sfruttamento era progettato per raccogliere un'ampia gamma di credenziali e segreti. I bersagli principali includevano :
Il furto di una gamma così ampia di credenziali indica un'acquisizione opportunistica e “data-agnostic” di qualsiasi token di accesso di valore presente sul server compromesso .
I 583 file di workflow nei 10 pacchetti Packagist erano solo la scoperta iniziale. Analizzando gli indicatori degli aggressori, come un dominio di callback DNSHook condiviso e pattern di riutilizzo del codice, i ricercatori hanno scoperto un'operazione molto più ampia :
Questa enorme discrepanza suggerisce fortemente che gli aggressori abbiano compromesso molti altri account e repository di sviluppatori oltre al singolo account dinushchathurya . La campagna non era un singolo punto di fallimento, ma un'operazione coordinata su più account. The Hacker News ha riportato un attacco separato alla supply chain di Packagist nel maggio 2026 che ha compromesso 8 pacchetti con elementi malevoli correlati , evidenziando ulteriormente la vulnerabilità dell'ecosistema.
La campagna rappresenta una minaccia persistente perché l'infrastruttura dell'aggressore non è stata completamente neutralizzata. La campagna potrebbe continuare attraverso :
43[.]228[.]157[.]68) potrebbe essere ancora operativo e ricevere dati attivamente .Mentre l'account Packagist dello sviluppatore originale è stato sospeso, la scala dei file di workflow corrispondenti (fino a ~16.000) significa che l'operazione ha un'impronta molto ampia che è difficile da sradicare completamente .
Sulla base dell'analisi pubblicata, organizzazioni e sviluppatori dovrebbero intraprendere immediatamente le seguenti azioni :
push o workflow_dispatch senza revisione manuale.43[.]228[.]157[.]68) e al dominio di callback DNSHook noto ..github/workflows/ inaspettati, poiché il codice PHP stesso potrebbe essere pulito mentre l'attacco risiede interamente nella configurazione CI/CD .