Blog
Ubiquiti UniFiCISA KEVZero-DayGenerative Pentest

Ubiquiti UniFi CVE-2026-34908: la patch non sfratta l'intruso

CVE-2026-34908 è un bypass di autenticazione UniFi con CVSS 10.0 sfruttato per piazzare account admin abusivi. Applicare la patch entro la scadenza CISA chiude la porta — non chi è già dentro.

Zero Hunt Research··7 min di lettura

Il 23 giugno 2026 CISA ha aggiunto tre falle di UniFi OS al suo catalogo delle Known Exploited Vulnerabilities, fissando la scadenza di remediation al 26 giugno ai sensi della Binding Operational Directive 26-04. Il bug principale, CVE-2026-34908, è un bypass del controllo di accesso non autenticato con un CVSS pieno di 10.0. La parte interessante è la cronologia: Ubiquiti ha rilasciato la correzione il 22 maggio — un mese intero prima che CISA segnalasse la falla come attivamente sfruttata. Quando è partito l'orologio federale, la patch era disponibile da trentadue giorni e gli attaccanti stavano già creando account amministrativi abusivi sui dispositivi esposti. È esattamente questo il punto dell'articolo: su questa classe di bug la patch non è il traguardo. È il colpo di pistola che fa partire la bonifica.

Cosa è davvero CVE-2026-34908

UniFi OS è il sistema operativo che sta sotto le console hardware di Ubiquiti, i Cloud Gateway e i controller che gestiscono reti distribuite. L'advisory di maggio copriva cinque vulnerabilità, tre delle quali di gravità massima:

  • CVE-2026-34908 (CVSS 10.0) — controllo di accesso improprio. Un attaccante non autenticato con raggiungibilità di rete può modificare il sistema: alterare la configurazione, disabilitare i controlli di sicurezza o cambiare il comportamento della rete.
  • CVE-2026-34909 (CVSS 10.0) — path traversal. Permette di leggere o manipolare file sul sistema operativo sottostante, esponendo file di configurazione, credenziali e i salt che proteggono i segreti memorizzati.
  • CVE-2026-34910 (CVSS 10.0) — validazione dell'input impropria che abilita la command injection sul sistema operativo.
  • Una quarta falla, CVE-2026-33000 (CVSS 9.1), è una variante di command injection che richiede autenticazione.

Prese singolarmente, sembrano un normale martedì delle patch. Il motivo per cui hanno guadagnato un 10.0 è cosa succede quando le si concatena. I ricercatori di Bishop Fox hanno dimostrato che i bug si combinano in una remote code execution completa come root. Il meccanismo è di quelli classici e pericolosi: il gateway di autenticazione è un reverse proxy NGINX davanti all'applicazione, e il bypass abusa del modo in cui NGINX normalizza i path delle richieste. Una richiesta costruita ad arte con un prefisso esente da autenticazione, dopo la normalizzazione, risolve verso una rotta interna autenticata — così il gateway la lascia passare, e la richiesta finisce sul punto di command injection dietro di esso. Un'autenticazione che esiste non è la stessa cosa di un'autenticazione che tiene.

Se lo schema vi suona familiare, è giusto così. È lo stesso fallimento strutturale dietro le fughe di credenziali di Citrix NetScaler e FortiBleed che abbiamo trattato in questo trimestre: un'appliance esposta su Internet la cui logica di front-door può essere ingannata fino a trattare un attaccante come un insider, su una scatola che siede sul perimetro senza alcun agente EDR e con un logging proprio limitato.

Il raggio d'impatto: 100.000 endpoint

Non è un'appliance di nicchia. Al momento della divulgazione, Censys contava circa 100.000 endpoint UniFi OS esposti su Internet, di cui circa 50.000 negli Stati Uniti. UniFi è lo stack di rete predefinito per una coda lunghissima di organizzazioni: filiali, catene retail, ambulatori, studi legali, scuole, piccole imprese gestite da MSP e i laboratori casalinghi degli stessi ingegneri che di giorno fanno girare reti enterprise.

Quel profilo di deployment è esattamente ciò che rende così ampio il divario di applicazione delle patch. Il dispositivo da aggiornare è raramente quello che la vostra dashboard centrale riesce a vedere. È una console in un retro di un sito remoto, spesso con gli aggiornamenti automatici disattivati perché un aggiornamento firmware non presidiato una volta ha messo offline una sede, dietro nessuna finestra di manutenzione e di proprietà di nessuno in particolare. Un CVSS 10.0 con una correzione disponibile vale solo quanto la frazione di quelle 100.000 scatole che qualcuno tocca davvero prima che lo facciano gli attaccanti.

Perché "patcha entro il 26 giugno" è il traguardo sbagliato

Ecco il dettaglio che dovrebbe cambiare il modo in cui leggete la scadenza CISA. Quando sono emerse le segnalazioni di sfruttamento, gli amministratori sui forum di Ubiquiti e su Reddit hanno trovato account amministrativi abusivi — ripetutamente sotto lo username "John Sim" — creati in quelle che sembravano scansioni di ricognizione automatizzate. Applicate UniFi OS Server 5.0.8 e chiudete il bypass NGINX. Ciò che non cancellate è l'account amministrativo che un attaccante ha piazzato mentre il bypass era aperto.

È la parte che lo scanner di versione e la dashboard delle patch strutturalmente non possono dirvi. Dopo la patch, il dispositivo riporta una versione corretta, la dashboard diventa verde e la casella della BOD 26-04 viene spuntata. L'account abusivo è ancora lì. E con lui tutto ciò che è stato preparato durante la finestra di esposizione: una chiave SSH aggiunta, una configurazione modificata che riapre un percorso, una credenziale sottratta dai file che CVE-2026-34909 ha esposto e riutilizzata da qualche parte dove il firewall non registra nulla.

"Abbiamo patchato tutte le console UniFi entro il 26 — siamo conformi." "Conformi a cosa? Avete chiuso la porta che l'attaccante ha usato a maggio. Dimostratemi che la scatola attraverso cui è passato adesso è vuota. Quale test l'ha fatto?"

La direttiva misura se avete applicato l'aggiornamento. Non misura, e non può misurare, se il dispositivo è pulito. Sono due domande diverse, e solo a una risponde una patch.

Cosa vede davvero ogni controllo

Mettete i controlli fianco a fianco contro questo incidente specifico e i vuoti si allineano:

Controllo Vede la falla non patchata? Vede l'admin abusivo piazzato? Lo vede durante la finestra zero-day?
Scanner di versione / patch Sì, una volta che esistono CVE + versione corretta No — la versione è "corretta", l'account è invisibile No — niente da segnalare prima della divulgazione
Dashboard patch (conformità BOD) Traccia l'aggiornamento applicato No — patchare ≠ sfrattare No
EDR n/d — nessun agente gira sull'appliance No No
ML sul traffico di rete Indirettamente La scansione di ricognizione e il callback C2 sono sul filo — comportamento, non firme
Re-test offensivo (assumed breach) Riproduce la catena — trova l'account piazzato e la persistenza A posteriori, ma in modo conclusivo

Due colonne contano più delle altre: quella dell'admin abusivo, dove ogni controllo passivo fallisce, e quella della finestra zero-day, dove l'unico testimone è la rete stessa.

La finestra zero-day apparteneva al filo

Tra il primo sfruttamento in the wild e l'inserimento nel KEV del 23 giugno, i difensori che si affidavano a firme e feed CVE non avevano nulla con cui fare match — per definizione, non esisteva una firma per un bug che nessuno aveva ancora catalogato. Ma il comportamento era rumoroso. Ricognizione automatizzata che colpisce un path NGINX esente da autenticazione, un'appliance che normalmente serve solo una UI di amministrazione che improvvisamente crea account e contatta l'esterno, callback di command injection da un dispositivo che non ha motivo di iniziare connessioni — niente di tutto questo ha bisogno di un numero CVE per sembrare sbagliato. Ha bisogno di qualcosa che osservi il traffico e modelli cosa sia "normale" per quella scatola. L'NDR basato su firme lo manca proprio perché è nuovo; il ML comportamentale lo coglie proprio perché è anomalo.

Dove si inserisce Zero Hunt

Tutto quanto sopra descrive due fallimenti che lo stack convenzionale non può chiudere da solo: una correzione che non sfratta un intruso piazzato, e una finestra zero-day senza alcuna firma da intercettare. Zero Hunt è costruito attorno a entrambi.

La risposta primaria qui è la validazione continua in assumed breach. Lo sciame di 10 agenti AI di Zero Hunt non si ferma a "questo dispositivo è patchato". L'agente Recon mappa le console e i gateway UniFi effettivamente esposti sul vostro perimetro; l'agente Exploit genera una ricostruzione per-target della catena bypass NGINX-verso-command-injection — scritta localmente per il vostro ambiente, non prelevata da un PoC pubblico; e gli agenti Credential, Post-Exploit e Pivot fanno il lavoro che la dashboard delle patch non può fare: cercare l'account admin abusivo, la chiave SSH piazzata, il percorso riaperto, la credenziale sottratta che si autentica ancora altrove. Ogni nuova skill viene back-testata nell'AI Gym contro corpora come Vulhub e Vulhub-Bench prima ancora di toccare un bersaglio di produzione, e ogni finding è firmato in ECDSA al momento della scrittura — così il bundle di evidenze che consegnate a un auditor dimostra che la scatola non è solo patchata ma pulita, che è ciò che la BOD 26-04 in realtà chiede. Poiché le campagne sono attivate dal cambiamento, la prossima console UniFi che compare in un sito remoto viene ri-testata entro un'ora, non al prossimo audit annuale.

La risposta secondaria copre la finestra prima che chiunque abbia un CVE da scansionare. L'AI Traffic Analysis di Zero Hunt fa girare un modello di deep learning proprietario con quattro teste di inferenza in parallelo — traffico sospetto, classificazione malware, identificazione del tipo di attacco e fingerprinting applicativo — localmente sulla GPU dell'appliance a 2.7+ Gbit/s, senza alcun callback verso il cloud. Non ha bisogno di una firma per CVE-2026-34908 per accorgersi che un'appliance di rete che ha sempre e solo servito una UI di amministrazione ora sta facendo ricognizione automatizzata e beaconing verso l'esterno. È il traffico di creazione dell'account John Sim, visto mentre accade — non ricostruito da log che l'attaccante potrebbe aver già toccato.

Le 100.000 scatole esposte saranno per lo più patchate entro fine settimana. La domanda che la scadenza CISA non pone — e quella che vale la pena rispondere — è quante di esse siano davvero vuote. Per un ragionamento collegato sul perché un CVE chiuso non sia un incidente chiuso, si veda la nostra analisi del bypass di segmentazione di Arista EOS senza patch prevista.