Blog
Arista VeloCloudCVE-2026-16812SD-WANCISA KEV

VeloCloud CVE-2026-16812: un orchestratore SD-WAN, tutte le filiali

CVE-2026-16812 è una command injection non autenticata CVSS 10.0 su Arista VeloCloud Orchestrator, sfruttata come zero-day. CISA ha assegnato tre giorni. Perché, e cosa fare.

Zero Hunt Research··15 min di lettura

Il 27 luglio 2026 Arista ha pubblicato il Security Advisory 0144 per CVE-2026-16812, una OS command injection non autenticata su VeloCloud Orchestrator on-premises, valutata CVSS 10.0 sia in v3.1 sia in v4.0. È stata trovata esternamente, era già sotto sfruttamento attivo, e l'advisory contiene una frase che dovrebbe fermare qualsiasi network team a metà caffè: "VCO is exposed by default. There is no configuration that can prevent the exposure." Lo stesso giorno CISA l'ha inserita nel catalogo Known Exploited Vulnerabilities con scadenza di remediation al 30 luglio — tre giorni. Quel numero non è un dettaglio decorativo: è il livello più alto di una direttiva entrata in vigore sette settimane fa, e cambia ciò che al difensore viene chiesto di dare per scontato.

Che cos'è davvero CVE-2026-16812

VeloCloud Orchestrator (VCO) è il management plane di un fabric SD-WAN VeloCloud. È dove si attivano gli edge, dove si scrivono business policy e configurazioni di routing, ed è la sorgente da cui quella configurazione viene distribuita a ogni filiale. Arista ha acquisito la linea di prodotto da Broadcom/VMware; le versioni interessate sono le installazioni on-premises, mentre le istanze Hosted e Dedicated erano già state aggiornate prima della pubblicazione dell'advisory. VeloCloud Gateway e VeloCloud Edge non sono vulnerabili.

Il bug è CWE-78, OS command injection, raggiungibile con il solo accesso di rete all'interfaccia web del VCO. Nessuna credenziale tenant. Nessuna credenziale operator. Nessuna interazione dell'utente. La descrizione dell'impatto è di Arista stessa: un attaccante remoto può "access privileged internal functionality and impact the VCO host".

Quella formulazione descrive con precisione la classe del bug. Il VCO non è un monolite: è un insieme di servizi interni dietro un front end NGINX sullo stesso host. La guida al deployment dell'Orchestrator documenta NGINX come web tier (i certificati SSL dell'Orchestrator risiedono sotto /etc/nginx/velocloud/ssl/), e la guida operativa 5.2 descrive la gestione degli upload come un server HTTP interno posto a valle di NGINX. In un'architettura così, il reverse proxy è il confine di sicurezza. Tutto ciò che sta dietro è stato scritto assumendo che solo il proxy possa raggiungerlo. Quando una discrepanza nella gestione delle richieste consente a una richiesta esterna di indirizzare direttamente uno di quegli endpoint interni, il confine non si indebolisce: smette di esistere. Il codice vulnerabile non era mai stato irrobustito, perché non doveva mai essere raggiungibile.

Versioni interessate e corrette, testuali dall'advisory:

Ramo Vulnerabile Corretto in
VCO 5.2.x precedenti a 5.2.3.14 5.2.3.14
VCO 6.1.x precedenti a 6.1.3.4 6.1.3.4
VCO 6.4.x precedenti a 6.4.2.4 6.4.2.4
VCO 7.0.x precedenti a 7.0.0.1 7.0.0.1

Arista elenca tre indirizzi sorgente osservati durante lo sfruttamento: 8.19.75.217, 206.72.242.124, 206.72.242.162. Vanno trattati come un pavimento, non come un perimetro: tre IP visti dalla finestra di visibilità di un singolo vendor sono ciò che quel vendor ha visto, non la campagna.

Un orchestratore SD-WAN non è un server, è un distributore di fiducia

Il CVSS misura un singolo sistema. Non ha vocabolario per dire a cosa serve quel sistema. Un CVSS 10.0 su un wiki di reparto e un CVSS 10.0 sull'orchestratore che custodisce le activation key di quattrocento filiali producono lo stesso numero e due mattinate completamente diverse.

L'orchestratore è ciò di cui ogni edge del fabric si fida già. Scrive la configurazione che gli edge accettano senza discutere, custodisce il materiale di credenziali e token che lega gli edge al fabric, e ha l'autorità legittima di modificare routing e business policy sull'intera WAN. Chi lo compromette non ha bisogno di muoversi lateralmente nel senso classico: gli basta usarlo. Aggiungere una rotta, modificare una business policy perché una parte del traffico esca da un gateway a sua scelta, esportare la topologia di tutti i siti dell'organizzazione — è tutto lavoro d'ufficio, per un orchestratore.

È lo stesso problema strutturale di cui abbiamo scritto per la catena sul controller Catalyst SD-WAN di Cisco e per il bypass di autenticazione su Check Point SmartConsole: quando l'asset compromesso è quello che impartisce istruzioni, la post-exploitation smette di somigliare a un'intrusione e comincia a somigliare ad amministrazione ordinaria.

Il 2026 è l'anno in cui il management plane SD-WAN è diventato il bersaglio

CVE-2026-16812 non è un episodio isolato, e trattarlo come tale è l'errore. Cisco ha divulgato una serie di zero-day su Catalyst SD-WAN nel corso del 2026, diversi dei quali bypass di autenticazione di severità massima, con l'attore tracciato come UAT-8616 che li concatena per ottenere il controllo amministrativo di management plane esposti su internet — un comportamento abbastanza serio da spingere CISA a emettere a febbraio una emergency directive con una finestra di mitigazione di due giorni. Due dei principali vendor SD-WAN sono ora oggetto di caccia all'orchestratore, non all'edge.

L'economia del fenomeno lo spiega. Il report 2026 di VulnCheck sui dispositivi di edge (23 marzo 2026) rileva che solo il 23,7% delle vulnerabilità su dispositivi edge che VulnCheck osserva come sfruttate compare poi nel KEV di CISA, e che il 42,5% delle vulnerabilità sfruttate nel 2025 riguardava dispositivi a fine vita o prossimi ad esserlo. L'infrastruttura di edge e di management si trova all'incrocio di tre proprietà comode per l'attaccante: deve essere raggiungibile per svolgere la sua funzione, viene aggiornata con i tempi del change management e non con quelli del Patch Tuesday, ed è la classe di asset su cui tipicamente non si può installare un agent EDR. Compromettere un management plane è un moltiplicatore di forza: un exploit, e poi autorità legittima su un intero patrimonio distribuito.

Tre giorni di scadenza sono CISA che dice "dai per scontato che abbia già funzionato"

Questa è la parte che quasi tutte le analisi salteranno, perché richiede di leggere il catalogo invece del comunicato.

La BOD 26-04, emessa il 10 giugno 2026, ha revocato la BOD 22-01 e il suo orologio piatto di 14 giorni sul KEV. Al suo posto c'è un modello risk-based che valuta ogni voce su esposizione a internet, evidenza di sfruttamento, automatizzabilità dell'exploit e impatto post-exploitation, e assegna una fra quattro finestre: 3 giorni, 14 giorni, 60 giorni, oppure il prossimo ciclo di upgrade. I destinatari sono le agenzie federali statunitensi; tutti gli altri ricevono gratuitamente un segnale di severità pubblicato in continuo e strettamente migliore del CVSS, perché è calcolato sulla realtà del deployment e non sulla vulnerabilità in astratto.

Quella graduazione è leggibile nel JSON. Il 27 luglio CISA ha aggiunto due vulnerabilità nello stesso aggiornamento di catalogo. Il testo di requiredAction è boilerplate identico su entrambe. Le scadenze no:

CVE Prodotto Aggiunta Scadenza Finestra
CVE-2026-16812 Arista VeloCloud Orchestrator 2026-07-27 2026-07-30 3 giorni
CVE-2025-68686 Fortinet FortiOS (information disclosure) 2026-07-27 2026-08-10 14 giorni

Stessa versione di catalogo, stesso giorno, stesso testo di required action, e una delle due riceve quattro volte e mezzo il tempo. Quella differenza è esattamente il senso della direttiva, ed è l'input di triage più rapido a disposizione di un team che non ha tempo di leggere quattro advisory prima dello standup.

Per capire come la graduazione sia stata applicata finora — calcolato direttamente sul JSON KEV pubblicato da CISA, catalogVersion 2026.07.27, riproducibile in una riga:

curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json \
| python3 -c '
import sys,json,datetime,collections
d=json.load(sys.stdin); c=collections.Counter()
for v in d["vulnerabilities"]:
    a=datetime.date.fromisoformat(v["dateAdded"])
    if a>=datetime.date(2026,6,10):
        c[(datetime.date.fromisoformat(v["dueDate"])-a).days]+=1
print(dict(sorted(c.items())))'

Delle 38 voci aggiunte da quando la BOD 26-04 è in vigore, 33 hanno una finestra di 3 giorni e 5 di 14 giorni. Nulla è ancora stato classificato nei livelli a 60 giorni o al prossimo ciclo. La lettura pratica: da giugno 2026 in poi, una comparsa nel KEV è per default un evento della stessa settimana, e sono le voci a 14 giorni l'eccezione da notare, non il contrario.

La seconda metà della required action conta quanto la data. La BOD 26-04 affianca alla finestra di patching i Forensics Triage Requirements: l'obbligo non è "installa l'aggiornamento", è "installa l'aggiornamento e stabilisci se prima è stato usato contro di te". Per uno zero-day sfruttato prima che l'advisory esistesse, applicare la patch al terzo giorno non è remediation. È il momento in cui l'indagine può iniziare senza che l'attaccante rientri dalla stessa porta.

Perché dopo la caduta dell'orchestratore l'edge non racconta nulla

Ipotizziamo lo scenario peggiore: il vostro VCO è stato raggiunto prima del 27 luglio. Che cosa, concretamente, si sarebbe visto da qualche parte nel vostro stack?

Analista SOC: L'edge di Rotterdam ha ricevuto una nuova regola di business policy alle 02:14. La segnalo? Network engineer: Da dove arriva? Analista: Dall'orchestratore. Config push firmato, stesso canale di ogni altra modifica che facciamo. Engineer: Allora no. È l'orchestratore che fa esattamente quello che fa l'orchestratore.

Niente in questo scambio è un errore di processo. L'edge ha validato correttamente il push. La traccia di change management dice che l'ha scritto l'orchestratore. L'unico punto in cui la storia si rompe è se qualcuno chiede chi l'abbia scritta *sull'*orchestratore — e se la risposta è una command injection alle 02:11, l'audit log dell'orchestratore è scritto da un host che l'attaccante controlla.

È asimmetria di detection allo stato puro. L'exploit è una manciata di richieste HTTP verso un'interfaccia web che riceve traffico legittimo tutto il giorno. La post-exploitation è indistinguibile dall'amministrazione di rete. Non c'è malware da classificare, nessun processo anomalo su un host di filiale, nessun account che si comporta in modo strano. La telemetria endpoint non ha visibilità, perché l'asset compromesso non esegue un agent e le azioni che compie sono policy, non payload.

Ciò che invece cambia è il filo. L'host orchestratore inizia a stabilire sessioni in uscita che non ha ragione di stabilire: un controller SD-WAN parla con i propri edge, con i propri gateway e con una lista breve di endpoint di vendor e telemetria, e in pratica con nient'altro. Nuovo traffico in uscita da un host di management verso un AS senza alcuna relazione operativa con il fabric è uno dei pochi segnali che sopravvive quando la macchina stessa non è più affidabile. Lo è anche la forma di un export di topologia: volume in uscita sostenuto da un sistema il cui profilo normale è un gran numero di piccole sessioni di controllo bidirezionali. Il management plane si presta insolitamente bene alla detection comportamentale di rete proprio perché il suo traffico legittimo è così stretto e così stabile.

Remediation

Il VCO è esposto su internet per disegno ed è stato sfruttato prima che la correzione fosse disponibile: trattate esposizione e compromissione come due domande separate e rispondete a entrambe.

1. Sono interessato?

Rientra nel perimetro solo il VCO on-premises. Le installazioni Hosted e Dedicated erano già state aggiornate da Arista prima della divulgazione.

Verificate la versione in esecuzione — l'interfaccia dell'Orchestrator la riporta nella vista operator/about, ed è visibile anche in un support bundle. Confrontatela con la tabella sopra: qualsiasi build inferiore a 5.2.3.14, 6.1.3.4, 6.4.2.4 o 7.0.0.1 è vulnerabile.

Verificate la raggiungibilità dall'esterno della vostra rete, non dalla VLAN di management:

# da un punto di osservazione esterno, non dalla rete di management
curl -skI --max-time 10 https://<vco-fqdn>/ | head -5

# chi può realmente raggiungerlo: si controlla il perimetro, non le intenzioni
# (il vendor è esplicito: nessuna impostazione lato VCO rimuove questa esposizione)

Se l'interfaccia web risponde da internet su una build non corretta, date per scontato che la finestra sia rimasta aperta per tutto il tempo in cui quella build è stata in esercizio.

2. Patch — versioni corrette esatte

Testuali da Arista SA-0144:

  • 5.2.x → 5.2.3.14 o successive
  • 6.1.x → 6.1.3.4 o successive
  • 6.4.x → 6.4.2.4 o successive
  • 7.0.x → 7.0.0.1 o successive

Non esiste una correzione parziale né una modifica di configurazione supportata che mitighi il difetto sul posto. La scadenza CISA per le agenzie federali è il 30 luglio 2026; se non siete un'agenzia federale, quella data resta la migliore stima disponibile di quanto rapidamente CISA si aspetta che la falla venga armata su larga scala.

3. Non potete applicare subito la patch? Controlli compensativi

Arista è esplicita: nessuna impostazione del VCO rimuove l'esposizione. Il che significa che ogni controllo qui elencato sta a monte dell'orchestratore:

  • Restringete l'interfaccia web a livello di rete ai range sorgente amministrativi e allo spazio di indirizzamento da cui i vostri edge si attivano legittimamente. È l'unico controllo che riduce davvero la superficie di attacco, e va messo su un firewall o un load balancer, non sul VCO.
  • Bloccate i tre indirizzi sorgente pubblicati (8.19.75.217, 206.72.242.124, 206.72.242.162) — necessario, e ampiamente insufficiente. Bloccare IOC noti ferma l'attore che già conoscete.
  • Mettete l'interfaccia dietro un reverse proxy autenticante o una VPN se il vostro modello operativo lo tollera. Un bug di path confusion nel proxy applicativo non si risolve con il filtro della stessa applicazione, ma si risolve non ricevendo affatto la richiesta.
  • Applicate rate limiting e logging aggressivo al perimetro. L'advisory di Arista indica gli alti tassi di richiesta fra gli indicatori: non potete vederli se il perimetro non registra.
  • Allarmate su qualsiasi connessione in uscita dall'host VCO verso una destinazione fuori dal suo insieme noto. Costa poco da implementare ed è il controllo con la maggiore probabilità di scattare durante un incidente reale.

4. Caccia alla compromissione

L'advisory indica di esaminare i log di accesso web del VCO alla ricerca di componenti di path inusuali, caratteri codificati, riferimenti a servizi interni e tassi di richiesta elevati. Confermate i percorsi esatti dei log sulla vostra build prima di farci affidamento: la documentazione operativa di Arista colloca i log applicativi sotto /var/log/portal/ e /var/log/backend/, con NGINX davanti al web tier.

# path traversal codificato / abuso di normalizzazione contro il web tier
grep -aE '%2e|%252e|%2f|%252f|\.\./' /var/log/nginx/*access*.log

# richieste che raggiungono endpoint che non dovrebbero essere indirizzabili dall'esterno
grep -aE '(internal|localhost|127\.0\.0\.1|admin|upload)' /var/log/nginx/*access*.log \
  | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

# i tre indirizzi IOC pubblicati, su tutti i log della macchina
grep -rasE '8\.19\.75\.217|206\.72\.242\.124|206\.72\.242\.162' /var/log/

# errori applicativi correlati alla finestra delle richieste
grep -aiE 'sh: |command not found|/bin/(ba)?sh' /var/log/portal/*.log /var/log/backend/*.log

Poi cercate ciò che l'esecuzione di comandi lascia dietro di sé:

# file scritti in directory applicative e servibili via web nella finestra di esposizione
find / -xdev -newermt '2026-06-01' -type f \
     \( -name '*.php' -o -name '*.jsp' -o -name '*.sh' -o -name '*.py' \) 2>/dev/null

# persistenza
crontab -l; ls -la /etc/cron.*/ /var/spool/cron/ 2>/dev/null
systemctl list-unit-files --state=enabled | grep -viE 'velocloud|nginx|postgres|systemd|ssh'
ls -la /etc/systemd/system/*.service | grep -v '\.wants'

# account e chiavi aggiunti dopo il fatto
awk -F: '$3>=1000 {print}' /etc/passwd
find /root /home -name authorized_keys -newermt '2026-06-01' -exec ls -la {} \;

# egress attuale da un host che dovrebbe parlare solo con edge, gateway ed endpoint del vendor
ss -tunap | grep ESTAB

Mappatura MITRE ATT&CK della catena descritta:

Fase Tecnica
Raggiungere l'interfaccia VCO esposta su internet T1190 Exploit Public-Facing Application
OS command injection sull'host T1059 Command and Scripting Interpreter
Raccogliere credenziali edge e token API dall'orchestratore T1552 Unsecured Credentials
Persistere via cron / systemd / account aggiunti T1543.002 Create or Modify System Process, T1053.003 Scheduled Task/Job: Cron
Distribuire configurazione agli edge gestiti T1098 Account Manipulation, T1565.001 Stored Data Manipulation
Beaconing in HTTP/S dall'host di management T1071.001 Application Layer Protocol: Web Protocols
Esfiltrare topologia e configurazione del fabric T1041 Exfiltration Over C2 Channel

5. Bonifica e verifica

Applicare la patch a un orchestratore compromesso produce un orchestratore compromesso e aggiornato. L'ordine conta:

  1. Prima preservate. Fate uno snapshot della VM e copiate i log fuori dall'host prima di toccare qualsiasi cosa. Su un'appliance di management le prove sono la directory dei log, e l'upgrade potrebbe ruotarla. L'obbligo di triage forense della BOD 26-04 presuppone che siano ancora vostre.
  2. Aggiornate alla build corretta, poi verificate la versione realmente in esecuzione, non quella prevista.
  3. Ruotate tutto ciò che l'orchestratore custodisce. È il passo che i team saltano ed è quello che decide se l'incidente è chiuso. Credenziali amministrative e operator. Token API. Materiale SSL dell'Orchestrator sotto /etc/nginx/velocloud/ssl/. Activation key degli edge e ogni segreto condiviso usato per legare gli edge al fabric. Tutto ciò che è memorizzato nel database del VCO e autentica verso qualcos'altro — SMTP, SNMP, endpoint di integrazione. Una command injection sull'host significa che ogni segreto su quell'host è un ex segreto.
  4. Confrontate la configurazione con una baseline attendibile. Ogni regola di business policy, rotta, regola firewall e profilo di edge, confrontati con l'ultimo export di cui vi fidate. Se non ne avete uno, lo stato attuale diventa la vostra baseline solo dopo una revisione riga per riga: una modifica di policy non autorizzata è il risultato di maggior valore per un attaccante qui, e il meno probabile da notare.
  5. Riverificate dall'esterno. Confermate che risponda la versione corretta, che l'interfaccia sia ora raggiungibile solo dai range previsti e che non ci siano sessioni in uscita dall'host VCO verso destinazioni fuori dall'insieme noto.
  6. Ricostruite se trovate artefatti di esecuzione. Una volta che comandi arbitrari sono girati con privilegi su un'appliance, la bonifica è un'ipotesi mentre la ricostruzione da immagine più il ripristino di una configurazione revisionata è un fatto.

Dove si colloca Zero Hunt

La domanda con cui questo articolo si apre non era "esiste una patch" — esiste, e applicarla è lineare. Era "come farei a sapere che è già successo". È un problema di detection su un asset senza agent endpoint, dove le azioni dell'attaccante sono operazioni amministrative legittime.

L'AI Traffic Analysis di Zero Hunt è costruita esattamente per questa forma. È un modello di deep learning proprietario addestrato su miliardi di sequenze PCAP, con quattro teste di inferenza parallele — traffico sospetto, classificazione malware, identificazione del tipo di attacco, fingerprinting applicativo — in esecuzione sulla GPU dell'appliance a 2,7+ Gbit/s, senza alcuna callback verso il cloud. Non ha bisogno di un agent sull'orchestratore, perché legge il filo su cui l'orchestratore è attestato. Un host di management il cui intero profilo legittimo consiste in sessioni di controllo verso un insieme noto di edge e gateway è quasi il soggetto ideale per la detection comportamentale: nuovo traffico in uscita verso un AS mai visto, un trasferimento sostenuto da un sistema che normalmente scambia piccoli messaggi bidirezionali, o la periodicità di un beacon dentro HTTPS emergono con nettezza su una baseline così stretta — mentre l'attività è in corso, non nel digest del SIEM del mattino dopo.

Il lato esposizione è il pilastro dell'AI generative pentest. Uno swarm di 10 agenti — Recon, Exploit, Web, Credential, Post-Exploit, Pivot, Tactic, Report, sotto un AI Controller — stabilisce che cosa è realmente raggiungibile e realmente sfruttabile sul vostro perimetro, invece di ciò che una CMDB dichiara esistere. Qui contano più le campagne change-triggered della pianificazione: una nuova interfaccia di management che compare sul perimetro innesca una campagna completa entro l'ora, ed è l'unica cadenza compatibile con una vulnerabilità passata da sconosciuta a scadenza federale di tre giorni nell'arco di una giornata. Ogni finding è firmato ECDSA al momento della scrittura, ed è ciò che trasforma "abbiamo controllato" in prova che un auditor o un assicuratore accettano — sotto il requisito di triage forense della BOD 26-04, e sotto gli obblighi equivalenti della NIS2 in Europa, quella distinzione è ormai la differenza fra un rilievo chiuso e uno aperto.

Se gestite un orchestratore SD-WAN on-premises, l'ordine di oggi è: verificate la versione, verificate chi può raggiungerlo, applicate la patch, poi andate a cercare. Il terzo passo è quello con una scadenza. Il quarto è quello che determina se la scadenza contava davvero.


Volete vedere che cosa un attaccante può realmente raggiungere sul vostro perimetro, in continuo invece che una volta l'anno? Contattateci o scoprite come funziona la piattaforma.