Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.
Il 26 ottobre 2026 TrendAI Zero Day Initiative ha reso pubblica una vulnerabilità di esecuzione remota di codice nella libreria open source libwebsockets. Il bug, tracciato come CVE-2026-114550/ZDI-26-792 con un punteggio CVSS di 8.1 secondo la lista ZDI, risiede nel parser dei pacchetti MQTT PUBACK e permette a un attaccante remoto di sovrascrivere memoria senza autenticarsi. La correzione è disponibile da mesi, ma la diffusione della libreria in firmware embedded e gateway IoT lascia prevedere finestre di esposizione prolungate.
- La vulnerabilità CVE-2026-114550 colpisce il parser MQTT PUBACK di libwebsockets con un out-of-bounds write che consente RCE senza autenticazione.
- Il CVSS è 8.1 secondo la lista pubblicata ZDI, che classifica la falla ad alto impatto con bassa complessità di attacco.
- La patch del maintainer warmcat, commit c9e8e18, modifica una sola riga nella state machine del parser, correggendo la transizione di stato mancante.
- La segnalazione al vendor risale al 16 luglio 2026: sono trascorsi 102 giorni prima del rilascio coordinato dell'advisory.
Il bug: quando la state machine sbaglia passo
Il nucleo del difetto è un errore di gestione della macchina a stati finiti che regola il parsing del protocollo MQTT in libwebsockets. Durante l'elaborazione dei pacchetti PUBACK con proprietà, il parser non effettua la transizione corretta dallo stato LMQCPP_PUBACK_VH_PKT_ID a LMQCPP_EAT_PROPERTIES_AND_COMPLETE. Questa omissione permette la scrittura oltre i confini del buffer allocato per i dati del pacchetto.
Come documenta l'advisory ZDI-26-792, "The specific flaw exists within the handling of PUBACK packets. The issue results from the lack of proper validation of user-supplied data, which can result in a write past the end of an allocated buffer". La conseguenza è l'esecuzione arbitraria di codice sul sistema target, con il medesimo advisory che chiarisce: "This vulnerability allows remote attackers to execute arbitrary code on affected installations of libwebsockets. Authentication is not required to exploit this vulnerability".
La natura pre-autenticazione del bug è critica: l'attaccante non necessita di credenziali valide né di posizione privilegiata nella rete, ma solo della capacità di inviare pacchetti MQTT PUBACK malformati a un endpoint esposto.
Una patch di tre righe, tre mesi di attesa
Il maintainer del progetto libwebsockets, Andy Green (warmcat), ha integrato la correzione nel commit c9e8e18. Il diff mostra la rimozione di due righe e l'aggiunta di una, con il messaggio di commit che sintetizza: "ZDI-CAN-31039: enter wrong state". La modifica impone esplicitamente la transizione di stato mancante nella state machine del parser MQTT, chiudendo la finestra di corruzione della memoria.
La timeline della divulgazione coordinata è archiviata nell'advisory ZDI: segnalazione iniziale al vendor il 16 luglio 2026, rilascio pubblico il 26 ottobre 2026. I 102 giorni intercorsi rientrano nelle finestre standard di responsible disclosure, ma evidenziano il divario tra disponibilità della correzione e comunicazione pubblica: durante questo intervallo, le installazioni che tracciano i canali di sicurezza del progetto avevano già accesso alla fix, mentre quelle dipendenti da cicli di aggiornamento vendor o da repository di distribuzione embedded restavano ignare.
La scoperta è attribuita a un ricercatore che ha preferito l'anonimato, con il commit ufficiale che cita: "This vulnerability was discovered by: Anonymous working with TrendAI Zero Day Initiative".
libwebsockets: una libreria nel cuore dell'edge
libwebsockets è una libreria C progettata per gestire connessioni WebSocket e protocolli correlati, incluso MQTT, in ambienti con risorse vincolate. Il suo impiego tipico ricade in dispositivi embedded, gateway IoT, sistemi di controllo industriale e applicazioni real-time dove la leggerezza e l'efficienza sono priorità assolute. Questo profilo d'uso rende la libreria particolarmente insidiosa dal punto di vista della sicurezza: i target che la implementano spesso mancano di meccanismi di aggiornamento automatico o di visibilità centralizzata sulla loro esposizione.
La vulnerabilità non interessa il modulo WebSocket in sé, ma il sottosistema MQTT integrato nella libreria. Questa distinzione è rilevante per la valutazione del rischio: i sistemi che impiegano libwebsockets esclusivamente per WebSocket, senza abilitare il broker o il client MQTT, non sono esposti alla superficie di attacco. Viceversa, i dispositivi che espongono endpoint MQTT per telemetry, command-and-control o integrazione con piattaforme IoT cloud risultano potenzialmente vulnerabili se non aggiornati.
"This vulnerability allows remote attackers to execute arbitrary code on affected installations of libwebsockets. Authentication is not required to exploit this vulnerability."
— Advisory ZDI-26-792, CVE-2026-114550
Cosa fare adesso
- Identificare le installazioni con libwebsockets e il sottosistema MQTT attivo: scannerizzare l'inventario software per rilevare la presenza della libreria, con attenzione ai servizi che espongono porte MQTT standard o custom.
- Applicare il commit c9e8e18 o una versione successiva che lo includa: la patch è pubblica e integrata nel repository ufficiale; le distribuzioni embedded devono essere ricompilate con il fix.
- Valutare la segmentazione di rete per i dispositivi IoT che non possono essere aggiornati immediatamente: limitare la visibilità degli endpoint MQTT a reti interne o VPN, riducendo la superficie esposta a attacchi remoti.
- Monitorare i log per pattern anomali nei pacchetti PUBACK: richieste MQTT con struttura irregolare o dimensioni fuori standard possono indicare tentativi di sondaggio o exploitation.
La lentezza come vulnerabilità secondaria
La lezione tecnica di CVE-2026-114550 non risiede nella complessità del bug: al contrario, è nella banalità della sua origine. Una transizione di stato mancante in una macchina a stati finiti è il tipo di errore che i code reviewer sono addestrati a individuare, ma che nei parser di protocolli binari può sfuggire per la combinazione di stati impliciti e condizioni limite non esercitate dai test di regressione. Il fatto che la correzione richieda una sola riga non diminuisce la gravità: anzi, la aumenta, perché riduce la barriera per chi voglia analizzare il diff e ricostruire il trigger.
La questione più rilevante per il lettore non è però il retroterra tecnico, ma la geometria del rischio che esso genera. libwebsockets alimenta software che viene impacchettato in firmware, sigillato in dispositivi, distribuito attraverso catene di approvvigionamento opache. In questo ecosistema, una patch disponibile su GitHub non equivale a una patch applicata sul campo. Il divario tra disclosure coordinata e mitigazione effettiva misura in mesi o anni, non in giorni. E mentre le timeline ufficiali si chiudono con il rilascio dell'advisory, la metà inferiore della storia — quella degli aggiornamenti che non arriveranno — comincia proprio ora.
FAQ
La vulnerabilità interessa tutte le installazioni di libwebsockets?
No. Il bug è specifico del parser MQTT PUBACK. I sistemi che utilizzano libwebsockets esclusivamente per WebSocket, senza abilitare funzionalità MQTT, non sono esposti alla superficie di attacco documentata.
Esiste un CVE ufficiale per questa falla?
Sì, CVE-2026-114550, assegnato e pubblicato nell'advisory ZDI-26-792. Il CVE è confermato dalla fonte primaria.
È disponibile il CVSS vector completo?
L'advisory testuale ZDI-26-792 non include il CVSS vector dettagliato. La lista pubblicata ZDI attribuisce alla vulnerabilità il punteggio 8.1.
Fonti
Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.