CreateRCE: un'altra vulnerabilità in CreateUri
Analisi riassuntiva
Il ricercatore di Akamai Ben Barnea ha individuato una vulnerabilità critica in Microsoft Windows a cui è stato assegnato il codice CVE-2023-35628.
Un criminale su Internet può attivare questa vulnerabilità contro i client di Outlook senza alcuna interazione da parte dell'utente (zero clic).
La vulnerabilità risiede nell'analisi di un percorso da parte della funzione CreateUri. Attualmente, siamo a conoscenza di due modi per attivare questa vulnerabilità: (1) inviando un'e-mail creata appositamente a un client di Outlook o (2) invitando un utente ad accedere da Esplora risorse ad una cartella contenente un file dannoso che è stato scaricato.
La vulnerabilità è stata segnalata in modo responsabile a Microsoft e descritta nella Patch Tuesday di dicembre 2023.
I computer Windows che hanno installato l'aggiornamento software di dicembre 2023 sono protetti da questa vulnerabilità. Inoltre, i client di Outlook che utilizzano server Exchange a cui è stato applicato l'aggiornamento software di marzo 2023 sono protetti contro la funzionalità abusata.
Introduzione
L'onnipresenza di Microsoft nelle aziende (e oltre) rende questo sistema operativo un allettante (e redditizio) bersaglio per i criminali. Ecco perché abbiamo compiuto un'esaustiva ricerca sulla relativa suite di prodotti e protocolli per individuare eventuali vulnerabilità e creare gli strumenti necessari per aiutare con le operazioni di rilevamento e mitigazione.
Come parte di questa ricerca, abbiamo individuato una vulnerabilità RCE (Remote Code Execution) nella funzione CreateUri di WinAPI, che viene richiamata come parte della patch utilizzata per la vulnerabilità originale CVE-2023-23397. Mentre la catena di vulnerabilità RCE precedente aveva bisogno di concatenare due vulnerabilità per raggiungere una primitiva RCE zero-click, questa vulnerabilità può farlo autonomamente. Oltre ad Outlook, mostreremo anche come attivare questa vulnerabilità in Esplora risorse.
La saga delle vulnerabilità
Tra le vulnerabilità risolte dalla Patch Tuesday di marzo 2023 , figurava una vulnerabilità critica di Outlook scoperta da Microsoft (a cui è stato assegnato il codice CVE-2023-23397), che era stata sfruttata in rete da un criminale russo sponsorizzato dallo stato denominato Forest Blizzard.
A dicembre 2023, Microsoft e il Polish Cyber Command hanno pubblicato di aver assistito a recenti tentativi di sfruttamento della vulnerabilità da parte dello stesso criminale. Questa vulnerabilità consentiva al malintenzionato di costringere un client Outlook a connettersi al server da lui controllato. Come parte di questa connessione, il client inviava le proprie credenziali NTLM al criminale, che poteva quindi decifrarle offline o utilizzarle in un attacco di inoltro. Questa vulnerabilità poteva essere sfruttata in remoto su Internet senza alcuna interazione da parte dell'utente (zero clic).
Dopo il rilascio della patch per questa vulnerabilità, abbiamo trovato due modi per correggerla insieme ad una vulnerabilità relativa all'analisi del suono. Concatenando la modalità di elusione con le vulnerabilità di analisi, si può creare una primitiva RCE zero-clic sul client di Outlook.
MapUrlToZone
Come parte della patch utilizzata per la vulnerabilità di Outlook, CVE-2023-23397, il codice responsabile di un suono di promemoria personalizzato aggiunge una chiamata a MapUrlToZone. La chiamata verifica che l'URL fornito, specificato tramite la proprietà MAPI estesa PidLidReminderFileParameter, non punti ad una risorse Internet.
Pur mitigando la vulnerabilità iniziale, ciò, tuttavia, aggiunge una nuova superficie di attacco, ossia la stessa funzione MapUrlToZone ; controlliamo il percorso passato a MapUrlToZone.
Come parte dell'analisi effettuata da MapUrlToZone, viene richiamata la funzione CreateUri. CreateUri crea un oggetto IUri che rappresenta un URI (Uniform Resource Identifier). Per creare l'oggetto, la funzione sa di dover analizzare entrambi gli URL e alcuni percorsi DOS di Windows.
Quando la funzione CreateUri viene richiamata con un percorso di file (ad es., con file:// schemeo un percorso di Windows che punta ad un file/directory), viene richiamata la funzione CrackUrlFile . Questa funzione contenuta nelle modalità di elusione è stata descritta nel blog precedente.
La nuova vulnerabilità
All'inizio del CrackUrlFile, se si riceve un URL anziché un percorso di Windows, viene creata una copia dell'imput, quindi la copia dell'URL viene trasformata in un percorso di Windows con PathCreateFromUrlW. Il buffer di lavoro viene segnato come allocato in modo dinamico, pertanto sa di doverlo liberare in seguito. Se la funzione riceve un percorso di Windows, lavora direttamente sul percorso di input e, pertanto, non deve liberare il puntatore.
Quando viene analizzato, il buffer di lavoro può venire avanzato, ad es., se si tratta di un percorso di un dispositivo locale (che inizia con "\\.\" o "\\?\"), la funzione fa avanzare il puntatore di quattro caratteri. Quindi, se il nome del dispositivo è "UNC\", avanza di altri quattro caratteri. Se sono presenti più barre rovesciate (\), la funzione fa avanzare il buffer anche dopo le barre rovesciate duplicate.
Come parte della nostra decompilazione delle patch per i metodi di elusione, abbiamo notato un nuovo codice aggiunto in CrackUrlFile a luglio 2023, che sembrava non correlato ai nostri metodi di elusione (Figura 1).
Come parte dell'analisi del percorso, la funzione controlla se si tratta del percorso di un'unità o di un percorso radicato In tal caso, il percorso viene segnato come locale. Il nuovo codice sovrascrive il puntatore del buffer originale con un puntatore al componente del percorso (il buffer avanzato) se si tratta del percorso di un'unità.
Il bug si origina in questo modo: Il puntatore fatto avanzare viene salvato. Successivamente, il puntatore del buffer originale (PPWorkingBuffer nella Figura 1) viene recuperato e liberato se era stato allocato in modo dinamico. Poiché è stato sovrascritto con il puntatore avanzato, si verifica una chiamata a free() con un puntatore che non è stato restituito da malloc. In tal modo, un criminale può disporre di una primitiva per fornire l'allocatore di memoria con metadati dei blocchi dannosi.
Per l'attivazione della vulnerabilità, dobbiamo prima specificare un URL per lo schema del file con un percorso UNC. Quindi, dobbiamo segnare il percorso come percorso di unità, pertanto dobbiamo usare una condivisione (C:). Il percorso completo per attivare la vulnerabilità sarà simile al seguente:
file://./UNC/C:/Akamai.com/file.wav
Il codice corretto ora copia i byte del componente del percorso con RtlMoveMemory anziché salvare il puntatore.
Attivazione tramite Esplora risorse
Anche se l'individuazione di queste posizioni non rientra nell'ambito della nostra ricerca, abbiamo fatto un breve tentativo: Attivazione tramite Esplora risorse.
A tal scopo, abbiamo creato un file di scelta rapida (.lnk) che punta al percorso vulnerabile. Una volta che la vittima visualizza la directory in cui si trova il file di scelta rapida, la vulnerabilità viene attivata in Esplora risorse, causandone il blocco immediato (Figura 2).
Per verificare se il vostro computer è vulnerabile a questo problema, potete scaricare liberamente la PoC (Proof-of-Concept) che causa l'arresto di Esplora risorse. Consigliamo di leggere attentamente le specifiche e i rischi correlati alla PoC nel nostro rapporto relativo alla ricerca sulla sicurezza prima dell'uso.
Riepilogo
Questo è il nostro blog finale relativo alla ricerca condotta sul potenziale impatto della vulnerabilità CVE-2023-23397.
A maggio 2023, quando abbiamo scoperto la prima modalità di elusione, abbiamo consigliato di rimuovere la funzione violata poiché l'utilizzo di MapUrlToZone aggiunge una nuova superficie di attacco. Abbiamo anche citato il fatto che l'esposizione di una superficie di attacco dell'analisi del suono ad un criminale remoto senza richiedere alcuna azione né sandbox presenta più pericoli che vantaggi per gli utenti.
Nella nostra successiva ricerca, siamo riusciti a dimostrarlo esattamente individuando due modalità di eslusione, rilevando un problema di analisi del suonoe, infine, trovando un percorso di Windows che analizza il danneggiamento della memoria.
Speriamo di avervi fornito utili informazioni sui percorsi di Windows, sui codec audio e sulle varie vulnerabilità tramite questi post. Incoraggiamo altri ricercatori a cercare nuove patch e a pensare ad altri modi per eluderle. Non possiamo escludere che esistano altre modalità di elusione di MapUrlToZone .
Desiderate ulteriori informazioni?
Leggete i nostri precedenti blog su questo argomento:
- Disattivazione dell'audio: concatenamento delle vulnerabilità per ottenere RCE su Outlook - Parte 1
- Disattivazione dell'audio: concatenamento delle vulnerabilità per ottenere RCE su Outlook: Parte 2
- Da una vulnerabilità all'altra: l'analisi delle patch di Outlook rivela un difetto importante nell'API di Windows