
Sintesi
Alla fine del 2023, i ricercatori di sicurezza hanno scoperto una vulnerabilità critica concatenata che riguarda l'interfaccia Web di Cisco IOS XE e che consente agli aggressori non autenticati di ottenere il pieno controllo dei dispositivi interessati. La catena di attacco combina due vulnerabilità di sicurezza - CVE-2023-20198 e CVE-2023-20273 - che, se sfruttate insieme, portano all'esecuzione di comandi a livello di root sull'host Linux sottostante che esegue IOS XE. Ciò consente l'acquisizione completa del dispositivo, l'accesso persistente e il potenziale movimento laterale attraverso le reti aziendali.
- CVE-2023-20198: Presente nelle versioni del Software Cisco IOS XE dalla 16.0.x alla 17.9.x, questa vulnerabilità consente agli aggressori non autenticati di ottenere l'accesso iniziale e creare un account di livello di privilegio 15 (amministratore) tramite l'interfaccia utente Web. Una volta creato, l'aggressore può eseguire qualsiasi azione amministrativa sul dispositivo, rappresentando un grave rischio per la sicurezza.

- CVE-2023-20273: Questa vulnerabilità, che interessa le stesse versioni del software, consente agli utenti autenticati con privilegi di livello 15 di eseguire comandi arbitrari con privilegi di root sul sistema operativo Linux sottostante attraverso una falla di command injection nel componente di gestione del software.

Durante il programma di borse di studio OPSWAT , i nostri borsisti, Hoa X.Nguyen e Nhan Nguyen, hanno condotto un'analisi tecnica approfondita di questa catena di attacchi. Nella nostra ricerca, abbiamo riprodotto le vulnerabilità su uno switch Cisco Catalyst 9300-24T-E con sistema operativo IOS XE 17.01, dimostrando come le falle possano essere concatenate per ottenere la completa compromissione del sistema in condizioni reali.
Sfondo
Panoramica di Cisco IOS XE

Cisco IOS XE è un sistema operativo di rete moderno e modulare che alimenta molte delle piattaforme aziendali Cisco, tra cui router, switch e controller wireless. Unisce le ricche funzionalità del classico Cisco IOS con un'architettura più sicura, programmabile e basata su Linux, offrendo agli amministratori di rete flessibilità e prestazioni migliori.
Nel suo nucleo, IOS XE funziona come un sistema operativo Linux che ospita il processo principale chiamato IOSd (IOS Daemon). Questo demone gestisce le attività di rete tradizionali, come il routing, la gestione della CLI e il controllo della configurazione. In IOS XE 17.01, il binario IOSd risiede in /usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms.
A differenza dei sistemi Cisco tradizionali, gli utenti di IOS XE che si collegano tramite SSH si trovano all'interno di una shell ristretta del sottosistema IOSd piuttosto che nell'ambiente Linux sottostante. Questo design isola il vero accesso a livello di root del sistema operativo, rafforzando in modo significativo il confine di sicurezza complessivo tra le interazioni dell'utente e il kernel dell'host.
Livelli di privilegio Cisco
I dispositivi Cisco implementano un modello di privilegi gerarchici per controllare le autorizzazioni degli utenti:
- Livello 0 - Accesso di livello zero: È il livello più limitato. In genere consente solo una serie limitata di comandi di base come logout, abilitazione, disabilitazione, aiuto e uscita.
- Livello 1 - Modalità EXEC utente: Accesso predefinito per i login standard, che consente la visualizzazione di base del sistema ma non la modifica della configurazione.
- Livello 15 - Modalità Privileged EXEC: È il livello di privilegio più alto e garantisce il controllo completo del dispositivo. Gli utenti di questo livello possono eseguire tutti i comandi, compresi quelli di configurazione, e possono ricaricare il dispositivo.
I livelli intermedi (2-14) possono essere personalizzati per concedere autorizzazioni specifiche. I privilegi sono ereditati, il che significa che gli utenti dei livelli superiori possiedono automaticamente i diritti dei livelli inferiori.
Architettura dell'interfaccia web Cisco
L'interfaccia Web di Cisco IOS XE fornisce un'interfaccia basata su browser per la gestione e il monitoraggio dei dispositivi, offrendo funzioni di configurazione e diagnostica senza richiedere l'accesso alla riga di comando. Internamente, l'interfaccia Web sfrutta NGINX come proxy middleware per instradare le richieste degli utenti a vari servizi interni, tra cui il Web Services Management Agent (WSMA).
Il componente WSMA funge da ponte di comunicazione tra l'interfaccia Web e il demone IOSd sottostante, traducendo le azioni basate sul Web nei corrispondenti comandi di configurazione di IOS XE.

Per imporre il controllo degli accessi, ogni richiesta è soggetta all'autenticazione basata su SOAP e alla verifica dei privilegi attraverso un'intestazione HTTP dedicata (Priv-Level), garantendo che solo gli utenti autorizzati possano eseguire operazioni privilegiate.

Analisi tecnica
CVE-2023-20198 - Bypass dell'autenticazione ed escalation dei privilegi
I nostri ricercatori hanno scoperto che la vulnerabilità è radicata nell'endpoint HTTP dell'interfaccia Web di Cisco IOS XE. Quando elabora le richieste in entrata, l'interfaccia Web passa i comandi e le relative autorizzazioni utente a un endpoint interno (/lua5), che vengono poi indirizzati da NGINX a uno dei due gestori WSMA - /webui_wsma_http o /webui_wsma_https - a seconda del protocollo.


L'analisi statica del binario IOSd rivela anche una configurazione di NGINX che include un gestore di fallback predefinito:

La vulnerabilità deriva dal modo in cui NGINX e IOSd gestiscono la codifica degli URL. Entrambi i componenti decodificano i percorsi degli URL in modo indipendente, consentendo a un utente malintenzionato di sfruttare un bypass della doppia codifica.
Ad esempio, se /webui_wsma_https viene inviato come /%2577ebui_wsma_https, NGINX esegue una singola decodifica e vede /%77ebui_wsma_https(che non corrisponde direttamente alla rotta interna protetta), quindi invia la richiesta tramite un gestore di fallback meno restrittivo. Quando la richiesta raggiunge il backend IOSd, IOSd esegue una seconda decodifica e risolve il percorso in /webui_wsma_https.

Poiché NGINX inizialmente instrada questa richiesta malformata utilizzando il suo gestore predefinito, non riesce ad applicare la normale logica di autenticazione e controllo degli accessi. Di conseguenza, l'aggressore può iniettare un'intestazione Priv-Level contraffatta che gli assegna privilegi di livello amministratore (15). In combinazione con un payload SOAP XML che trasporta un comando per la creazione di un nuovo utente, si ottiene la creazione silenziosa di un account locale con privilegi elevati.

Questo sfruttamento non richiede alcuna autenticazione preliminare e fornisce all'aggressore il pieno controllo della configurazione del dispositivo tramite l'interfaccia utente Web, stabilendo la prima fase della catena di attacco.
CVE-2023-20273 - Iniezione di comandi nella gestione Software
Una volta autenticatosi con l'account amministratore appena creato, l'aggressore può sfruttare CVE-2023-20273, una vulnerabilità di iniezione di comandi nel componente di gestione del software (/webui/rest/softwareMgmt/*). Questo endpoint è destinato agli amministratori legittimi per installare o aggiornare i pacchetti software sul dispositivo.
La falla ha origine dalla logica di convalida dell'input nella funzione validateSmuRequest(req), che chiama validator.validateIPv4IPv6HostNameAddress(req.ipaddress) per verificare l'indirizzo IP fornito nella richiesta. Questa fase di validazione ha lo scopo di garantire che l'indirizzo fornito sia formattato correttamente e sia sicuro da usare.
All'interno di validateIPv4IPv6HostNameAddress, la validazione si basa sulla routine utils.isIPv6Address(ip) per valutare la conformità della sintassi IPv6. Questa funzione tenta di analizzare l'input dividendolo in due punti (:) e valutando ogni segmento con un'espressione regolare volta a rifiutare modelli esadecimali non validi o valori fuori range. Il difetto di implementazione risiede in questa espressione regolare: a causa di un quantificatore * troppo permissivo, corrisponde a qualsiasi input, consentendo di fatto a valori malformati o dannosi di passare la convalida senza essere controllati.

Di conseguenza, i dati controllati dall'aggressore vengono accettati come validi e confluiscono nella logica a valle, dove vengono utilizzati nella costruzione del comando. Il valore dell'indirizzo IP non attendibile viene infine utilizzato nella funzione runPexecCommand() per costruire un comando di sistema che avvia una richiesta TFTP. Poiché questa operazione avviene senza convalida o escape dell'input, un utente malintenzionato può iniettare comandi arbitrari nel processo, portando all'esecuzione di comandi con privilegi elevati e alla completa compromissione del dispositivo Cisco.

Prova di concetto (PoC)
Durante il programma di borse di studio OPSWAT , i nostri borsisti Hoa X. Nguyen e Nhan Nguyen hanno riprodotto l'exploit concatenato in un laboratorio controllato e protetto dall'aria su un Cisco Catalyst 9300-24T-E con IOS XE 17.01. La sequenza di sfruttamento può essere riassunta nelle seguenti fasi:

- Richiesta a doppia codifica: inviare un POST appositamente creato a un percorso interno a doppia codifica (ad esempio, /%2577ebui_wsma_https) che viene instradato tramite il fallback proxy e contiene un'intestazione Priv-Level contraffatta e un payload SOAP di creazione dell'account.
- Ottenere la sessione di amministrazione: accedere con l'account creato e raccogliere i token di sessione/CSRF.
- Caricare il payload: utilizzare il caricamento dell'interfaccia Web per inserire attacker_shell.sh nel dispositivo (azione riservata agli amministratori).
- Esecuzione tramite SMU: inviare una richiesta SMU con un indirizzo ipaddress modificato (ad es, 100:100:100:$(/bin/sh /bootflash/attacker_shell.sh)); la convalida viene aggirata e lo script caricato viene eseguito come root.

Bonifica
Cisco ha rilasciato versioni corrette del Software Cisco IOS XE che risolvono le problematiche CVE-2023-20198 e CVE-2023-20273. Tutte le organizzazioni che utilizzano le versioni interessate dalla 16.0.x alla 17.9.x devono aggiornarsi immediatamente all'ultima versione corretta, come indicato nell'avviso di sicurezza ufficiale di Cisco. L'applicazione di questi aggiornamenti rimuove efficacemente le vulnerabilità sottostanti e impedisce l'escalation dei privilegi o l'iniezione di comandi non autorizzati attraverso l'interfaccia utente Web.
Per gli ambienti in cui non è possibile un aggiornamento immediato, gli amministratori devono limitare o disabilitare l'accesso all'interfaccia Web da reti non attendibili, applicare controlli di autenticazione rigorosi per le interfacce amministrative e monitorare costantemente i comportamenti insoliti del sistema, come la creazione di account non autorizzati o le modifiche anomale alla configurazione.
Per rafforzare la resilienza informatica complessiva, le organizzazioni possono integrare le patch dei fornitori con la piattaforma MetaDefender diOPSWAT, un framework di sicurezza unificato progettato per proteggere le infrastrutture critiche rilevando e prevenendo le minacce attraverso file, dispositivi e flussi di dati. L'integrazione di MetaDefender nei flussi di lavoro di rete e operativi migliora la visibilità, garantisce un'ispezione più approfondita delle minacce e fornisce un'ulteriore salvaguardia contro potenziali tentativi di sfruttamento dei sistemi di gestione.
Combinando aggiornamenti tempestivi di Cisco, solidi controlli degli accessi e una strategia di difesa a più livelli supportata dalla MetaDefender Platform, le organizzazioni possono ridurre significativamente l'esposizione a catene di exploit simili e mantenere una postura di sicurezza più forte e resistente.
