
Analisi tecnica e PoC per CVE-2024-6769, che combina DLL hijacking e avvelenamento della cache di attivazione per elevare da integrità media ad alta sui sistemi Windows.
Questo articolo riguarda due bug concatenati: Il primo stadio è un bug di DLL Hijacking causato dal rimappaggio dell'unità ROOT e il secondo stadio è un bug di Avvelenamento della Cache di Attivazione gestito dal server CSRSS.
Il primo stadio è stato presentato in dettaglio all'Ekoparty 2023 nella presentazione intitolata "I'm High" da Nicolás Economou di BlueFrost Security. Ha spiegato come sfruttare la vulnerabilità che, all'epoca, non era ancora stata corretta da Microsoft. Ciò consentiva a un utente con INTEGRITÀ MEDIA di essere elevato ad avere PRIVILEGI LIMITATI ALTI, ma senza l'accesso completo per essere un amministratore a tutti gli effetti.
Il secondo stadio non è stato presentato a quella conferenza, sebbene siano stati suggeriti alcuni passaggi per iniziare a fare ricerche su di esso.
Per iniziare, rivedremo il primo stadio per fornire un contesto introduttivo. Da lì, ci addentreremo nella mia ricerca sul secondo stadio, approfondendo i dettagli per ottenere una escalation completa da INTEGRITÀ ALTA limitata ad Amministratore completo. Questo include un PoC funzionante completo per entrambi gli stadi per tutte le versioni di Windows, che è stato testato con successo su Windows 10, Windows 11, Windows Server 2022 e Windows Server 2019 con tutti gli aggiornamenti applicati.

L'unico requisito per questo stadio è che il processo iniziale inizi a un LIVELLO DI INTEGRITÀ MEDIA e l'utente appartenga al gruppo Amministratori.
Il primo stadio dello sfruttamento può essere riassunto nei seguenti passaggi:
Ad esempio: rimappaggio del disco da
"C:\" a "C:\users\public"
Questo rimapperà anche la cartella "system32" da
"C:\windows\system32" a "C:\users\public\windows\system32"
Uno di questi programmi influenzati è CTFMON, che viene eseguito a un LIVELLO DI INTEGRITÀ ALTA ma senza privilegi di Amministratore.
Normalmente, tenta di caricare il modulo chiamato MsCtfMonitor.dll dalla vera cartella system32, ma poiché l'unità ROOT è stata rimappata, cerca MsCtfMonitor.dll nel nostro system32 falso controllato, dove possiamo creare e posizionare una DLL modificata con lo stesso nome.
A questo punto, posizionando la nostra versione di MsCtfMonitor.dll nella falsa cartella system32, la sua funzione DoMsCtfMonitor viene chiamata ed esegue il nostro codice a un LIVELLO DI INTEGRITÀ ALTA.




Allo stesso tempo, possiamo confermare che il processo, nonostante sia a un LIVELLO DI INTEGRITÀ ALTA, non ha privilegi di Amministratore:


Nella sua presentazione all'Ekoparty, Nicolas ha suggerito i seguenti passaggi per completare lo sfruttamento:


Sebbene ciò sembri semplice, richiede molto tempo per il reverse engineering e il debugging.
Approfondendo un po' la storia di questo vettore di attacco, è diventato chiaro che l'avvelenamento della Cache del Contesto di Attivazione è stato utilizzato in alcuni exploit. Di conseguenza, vale la pena imparare come lo sfruttamento è stato fatto in precedenza per fornire contesto e intuizioni aggiuntive. I dettagli su questo sfruttamento sono disponibili attraverso l'articolo della Zero Day Initiative, Activation Context Cache Poisoning: Exploiting CSRSS for Privilege Escalation.
L'uso della cache di attivazione avviene quando un programma sta per caricare una libreria che richiede una versione specifica.
Ad esempio, se un'applicazione sta per caricare C:\Windows\System32\comctl32.dll, non c'è garanzia che la comctl32.dll in quella posizione sia la versione di cui l'applicazione ha bisogno. Questo è un caso d'uso base della Cache dei Contesti di Attivazione. Il programma può inviare una richiesta al server CSRSS per elaborare una nuova voce di Contesto di Attivazione da inserire nella cache, in modo che questo programma possa caricare la versione specifica della libreria necessaria.
A questo scopo viene utilizzato il cosiddetto manifest, che è in formato XML. Di solito è incorporato come risorsa in un file EXE o DLL. In alternativa, Windows cercherà un file manifest nella stessa cartella in cui si trova l'eseguibile del programma.
L'URL menzionato sopra ha alcuni esempi di file Manifest utilizzati da vecchi exploit, come ingannare il sistema per caricare la libreria advapi32.dll da una directory controllata dall'attaccante raggiunta tramite tecnica PATH TRAVERSAL.

Naturalmente, alcuni vettori di attacco utilizzati sono stati corretti e sono state scoperte alcune nuove tecniche. Inoltre, nella patch di ottobre 2022 per Windows 11 22H2, è stato aggiunto un nuovo controllo.
Dopo l'implementazione di questa patch, il controllo quando un Contesto di Attivazione (ACTX) viene registrato può essere bypassato solo se il processo che aggiunge la nuova voce nella cache ha lo stesso RID o un RID superiore rispetto al processo che la utilizzerà.