🛡️ Executive Summary
- ChocoPoC prende di mira ricercatori e pentester attraverso falsi PoC pubblicati su GitHub per CVE recenti.
- La catena sfrutta dipendenze PyPI apparentemente innocue che installano un RAT Python persistente e offuscato.
- Il malware esfiltra dati browser, file locali e cronologie shell, usando servizi legittimi per rendere più difficile il rilevamento.
ChocoPoC conferma una tendenza sempre più aggressiva nella supply chain della sicurezza offensiva: colpire direttamente chi analizza vulnerabilità, sviluppa scanner e testa proof-of-concept pubblici. La campagna, documentata da YesWeHack e Sekoia, sfrutta repository GitHub che fingono di contenere exploit funzionanti per CVE recenti, ma nascondono la componente malevola nelle dipendenze PyPI richiamate durante l’installazione. Il meccanismo è efficace perché intercetta una dinamica reale del lavoro dei vulnerability researcher: quando emerge una falla critica, il tempo per verificare un PoC, produrre template di rilevamento o sviluppare moduli di scansione è molto ridotto. Gli aggressori sfruttano questa urgenza e trasformano il comando pip install in un vettore di compromissione. Il risultato è un Remote Access Trojan scritto in Python, dotato di persistenza, capacità di esfiltrazione, esecuzione remota di comandi e tecniche di evasione progettate per superare analisi superficiali e controlli automatizzati. La minaccia riguarda ricercatori indipendenti, team di bug bounty, SOC, red team e aziende che integrano PoC pubblici nei propri processi di verifica.
Cosa leggere
ChocoPoC nasce dalla corsa ai proof-of-concept per nuove CVE
La scoperta nasce il 25 giugno 2026, quando un ricercatore di YesWeHack ha ricevuto una notifica GitHub collegata a due presunti PoC per CVE-2026-48908, una vulnerabilità critica di esecuzione remota di codice non autenticata in un plugin Joomla. Uno dei repository, creato da poco e con attività precedente non pubblica, includeva nel file dei requisiti una dipendenza sospetta chiamata frint. Il pacchetto, apparentemente innocuo, dipendeva a sua volta da skytext, un modulo PyPI pubblicato circa un mese prima e presentato come libreria per colorare rapidamente l’output del terminale. La particolarità era la presenza di componenti native precompilate, un elemento che ha spinto i ricercatori ad analizzare il contenuto con strumenti di reverse engineering.

L’esame ha rivelato codice offuscato, controlli ambientali, blob cifrati e una catena di esecuzione coerente con un malware progettato per colpire proprio chi lavora su exploit e scanner. La tecnica non punta a convincere utenti generici, ma operatori esperti che, sotto pressione temporale, possono fidarsi di un repository apparentemente allineato a una CVE appena pubblicata.
La catena di delivery passa da GitHub a PyPI
Il modello operativo di ChocoPoC è costruito su una separazione netta tra codice visibile e payload reale. Il repository GitHub può apparire pulito a una prima revisione, perché la parte malevola non è necessariamente inclusa nel PoC principale. Il rischio si materializza quando il ricercatore clona il progetto ed esegue pip install per installare le dipendenze.

A quel punto entrano in gioco pacchetti come frint o slogsec, che richiamano moduli secondari come skytext. Quest’ultimo contiene estensioni native, indicate nei campioni come gradient.so o gradient.pyd, caricate direttamente dall’interprete Python tramite importlib.ExtensionFileLoader. Il caricamento della libreria nativa consente di eseguire codice senza che il ricercatore individui facilmente la logica malevola nei file Python visibili. Questo schema sfrutta una debolezza strutturale degli ecosistemi open source: un pacchetto apparentemente marginale può introdurre una dipendenza transitiva molto più pericolosa, aggirando controlli manuali limitati al repository clonato.
Il RAT si installa con persistenza nel site-packages di Python
Dopo l’attivazione, il binario nativo esegue una serie di verifiche per assicurarsi di trovarsi nell’ambiente previsto. Il malware controlla il basename del modulo caricato e prosegue solo se corrisponde al file atteso, come EXPLOIT_POC.py, verificato tramite hash. Questo gating riduce il rischio di attivazione in sandbox generiche e rende più difficile osservare il comportamento malevolo fuori dal contesto predisposto dagli aggressori. Una volta superati i controlli, il codice decifra cinque script Python compressi e cifrati con XOR, poi installa una struttura persistente nel site-packages dell’interprete. Il punto centrale è la creazione del file distutils-precedence.pth, associato al pacchetto _distutils_hack, che consente l’esecuzione automatica del payload a ogni avvio di un interprete Python. In pratica, la compromissione non resta confinata al singolo PoC: ogni successiva sessione Python può riattivare il malware, rendendo la rimozione manuale più complessa e aumentando il rischio per ambienti di ricerca, workstation di sviluppo e macchine usate per vulnerability intelligence.
Offuscazione, anti-debug e abuso di servizi legittimi
ChocoPoC integra tecniche di evasione più sofisticate rispetto a molti pacchetti malevoli distribuiti su registri pubblici. Il componente nativo utilizza PEB walking per risolvere dinamicamente le API di sistema senza importazioni dirette, un algoritmo di hashing personalizzato per localizzare funzioni esportate, controlli anti-debug tramite CheckRemoteDebuggerPresent e ispezione dei registri Dr0-Dr3. Il malware usa mutex per evitare esecuzioni concorrenti e timestomping per alterare i metadati temporali dei file creati. Il payload principale, eseguito tramite choco.py, contatta un dataset Mapbox via HTTPS, usa risoluzione DoH e tecniche di domain fronting per mascherare il traffico di comando e controllo. Dal dataset recupera uno script codificato in Base64, lo decodifica e avvia la fase RAT. L’abuso di servizi legittimi è particolarmente insidioso perché il traffico verso piattaforme note può sembrare meno sospetto rispetto a connessioni dirette verso domini appena registrati o infrastrutture criminali già classificate.
Le funzionalità puntano a credenziali, browser e shell history
Una volta installato, ChocoPoC opera come Remote Access Trojan completo. Il malware raccoglie dati da browser come Chrome, Brave, Edge e Firefox, mirando a password salvate, cookie, cronologia e dati di autofill. Cerca file locali con estensioni come .txt e .md, database presenti sul sistema e cronologie delle shell bash e zsh, particolarmente sensibili per ricercatori e sviluppatori perché possono contenere token, percorsi interni, comandi cloud, credenziali temporanee o riferimenti a infrastrutture di test. Il canale C2 permette inoltre di eseguire comandi shell arbitrari, lanciare codice Python dinamico, comprimere ed esfiltrare file e cartelle, modificare l’intervallo di beaconing e attivare raccolte mirate di dati browser. Alcuni comandi presentano nomi in spagnolo, come hola e dormir, un dettaglio che non basta per attribuire l’attacco, ma suggerisce una fase di sviluppo meno standardizzata o generata parzialmente con componenti riutilizzate.
Le campagne hanno seguito CVE ad alto interesse

L’indagine ha collegato ChocoPoC ad almeno sette repository GitHub falsi distribuiti tra la fine del 2025 e la metà del 2026. I repository imitavano PoC per vulnerabilità ad alto impatto, tra cui falle attribuite a FortiWeb, React2Shell, MongoBleed, PAN-OS e il plugin Joomla che ha portato alla scoperta pubblica della campagna. La scelta dei bersagli non è casuale: CVE critiche e prodotti ampiamente esposti generano una domanda immediata di exploit dimostrativi, template Nuclei, scanner e verifiche indipendenti. Gli aggressori hanno costruito un ecosistema credibile intorno a queste vulnerabilità, sfruttando nomi di repository plausibili, pacchetti PyPI con descrizioni tecniche compatibili e una catena di dipendenze che nasconde il payload nel punto meno controllato. Secondo le ricostruzioni pubbliche, alcune componenti e server risultavano ancora attivi al momento della disclosure, aumentando il rischio per chi avesse già clonato o testato i repository coinvolti.
La supply chain della ricerca diventa un bersaglio diretto
Il valore strategico di ChocoPoC sta nel bersaglio scelto. Compromettere un ricercatore di vulnerabilità può offrire accesso a credenziali di bug bounty, account GitHub, token cloud, ambienti di laboratorio, exploit non pubblicati, dati di clienti e template di scansione ancora in sviluppo. In alcuni casi una workstation di ricerca contiene più informazioni sensibili di un endpoint aziendale tradizionale, perché concentra strumenti offensivi, note tecniche e accessi a piattaforme esterne. Per ridurre il rischio, i PoC non verificati dovrebbero essere eseguiti solo in VM effimere, container senza credenziali, ambienti senza accesso al filesystem personale e reti isolate. Prima di eseguire pip install è necessario analizzare requirements.txt, dipendenze transitive, pacchetti appena pubblicati, estensioni native e file .pth. Le organizzazioni dovrebbero monitorare la creazione anomala di file nel site-packages, bloccare l’uso non necessario di interpreti Python persistenti, controllare traffico verso servizi abusabili come Mapbox e imporre policy di segregazione tra ambienti di ricerca e sistemi produttivi. La lezione operativa è netta: nell’ecosistema delle CVE, il PoC clonato può essere già l’attacco.
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.









