Runtime RPC: scoperta una nuova vulnerabilità
Analisi riassuntiva
Ben Barnea, ricercatore di Akamai, ha scoperto un'importante vulnerabilità nella libreria di runtime RPC (Remote Procedure Call): CVE-2022-22019, con un punteggio base di 8,8.
La nuova vulnerabilità trae vantaggio da un overflow di intero segnalato in precedenza su Microsoft e corretto con una patch ad aprile 2022.
La nuova vulnerabilità è stata descritta nel Microsoft Patch Tuesday di maggio,
di cui si consiglia la lettura, insieme al precedente elenco delle mitigazioni proposte da Microsoft, per correggere rapidamente e limitare lo sfruttamento di questa vulnerabilità per il movimento laterale con la segmentazione di rete.
Introduzione
Il 12 aprile 2022, Microsoft ha rilasciato le patch necessarie per risolvere tre vulnerabilità presenti nella libreria di runtime RPC (Remote Procedure Call) (rpcrt4.dll). Queste vulnerabilità sono assegnate ai seguenti CVE: CVE-2022-26809, CVE-2022-24492 e CVE-2022-24528. I sistemi operativi interessati sono Windows 7, 8, 10 e 11 e Windows Servers 2008, 2012, 2019 e 2022.
Lo sfruttamento di queste vulnerabilità potrebbe consentire ad un criminale non autenticato di eseguire codice da remoto sul computer vulnerabile con i privilegi del servizio RPC. Poiché questa funzionalità consente sia di violare una rete che di eseguire il movimento laterale, è prediletta dai criminali e dagli autori di attacchi di ransomware. Microsoft, dal canto suo, ha riferito che queste vulnerabilità presentano una buona probabilità di venire sfruttate. A causa della loro gravità (CVSS 9.8), abbiamo deciso di analizzare in modo approfondito la libreria corretta con le patch e abbiamo riportato i nostri risultati in un blog precedente sull'argomento.
Abbiamo scoperto che queste tre vulnerabilità erano causate da un overflow di intero e che la patch doveva controllare se si era verificato un problema di questo tipo. Questa correzione ha consentito a Microsoft di impedire lo sfruttamento di queste particolari vulnerabilità. Tuttavia, durante la nostra indagine siamo riusciti a individuare un'ulteriore vulnerabilità che utilizza un overflow di intero della stessa variabile come rilevato in precedenza e che non è stata mitigata dal controllo aggiuntivo.
Dopo un processo di divulgazione responsabile con Microsoft, ora possiamo descrivere la nuova vulnerabilità RPC. Scoperta nello stesso giorno in cui è stata rilasciata la Patch Tuesday di aprile e ora risolta con la patch di maggio, a questa vulnerabilità, presente sia nel codice del server che in quello del client, è stato assegnato un solo CVE:
Descrizione della vulnerabilità rilevata
Per comprendere la vulnerabilità RPC recentemente scoperta, guardiamo nuovamente alla vulnerabilità corretta ad aprile. Come abbiamo concluso nel nostro blog precedente, un overflow di intero era presente nel codice della libreria di runtime RPC, che, una volta violato, può condurre ad un heap overflow, una situazione in cui i dati vengono copiati in un buffer troppo piccolo per popolarlo. A sua volta, questa situazione consente di scrivere i dati oltre i confini del buffer sull'heap. Una volta sfruttata in modo corretto, questa vulnerabilità potrebbe condurre all'esecuzione remota del codice.
Per correggere questa vulnerabilità, è stata aggiunta una nuova chiamata ProcessReceivedPdu:
Questa chiamata attiva una funzione che controlla esattamente se il parametro dell'intero è interessato da un overflow:
Se si guarda alla funzione OSF_SCALL::GetCoalescedBuffer, in cui si verifica l'heap overflow, possiamo anche notare il controllo aggiunto:
GetCoalescedBuffer è responsabile della coalescenza di frammenti di buffer che sono stati messi in coda in ProcessReceivedPdu. L'overflow di intero originale si verifica quando la lunghezza totale dei frammenti messi in coda viene aggiunta alla lunghezza del buffer ricevuto e questa operazione conduce ad un overflow. Richiamando una funzione che verifica la presenza di overflow, Microsoft ha corretto la vulnerabilità originale.
Tuttavia, la patch ha solo parzialmente risolto la vulnerabilità. Durante la nostra ricerca, abbiamo scoperto che proprio prima di allocare la memoria per il nuovo buffer sottoposto a coalescenza, il codice aggiunge altri 24 byte alle dimensioni di allocazione (come visto in precedenza con la chiamata a OSF_SCALL::TransGetBuffer). Questi 24 byte rappresentano le dimensioni di uno struct denominato rpcconn_request_hdr_t, che funge da intestazione del buffer. Poiché la patch verifica la presenza di un overflow di intero prima di aggiungere le dimensioni dell'intestazione, non considera l'intestazione, poiché potrebbe condurre allo stesso overflow di intero che la patch sta tentando di mitigare.
La nuova vulnerabilità (una nel lato client e una nel lato server) è ora stata mitigata. La nuova patch aggiunge un'altra chiamata per confermare che non si verifica un overflow con l'aggiunta di 24 byte.
Mitigazione
Applicare gli aggiornamenti della sicurezza di maggio in grado di mitigare questa vulnerabilità.
Bloccare il traffico sulla porta TCP 445 dai dispositivi situati all'esterno del perimetro aziendale.
Limitare il movimento laterale consentendo l'utilizzo della porta TCP 445 in entrata solo ai computer su cui è necessaria (controller di dominio, server di stampa, file server, ecc.).
Cronologia delle divulgazioni
13 aprile 2022: è stato inviato un rapporto a Microsoft
13 aprile 2022: lo stato è cambiato da Nuovo in Revisione/Ripro.
22 aprile 2022: lo stato è cambiato da Revisione/Ripro. in Sviluppo
10 maggio 2022: è stata rilasciata una patch
Conclusione
L'applicazione di patch è considerata una delle fondamentali misure di sicurezza: quando viene scoperta una vulnerabilità, viene rilasciata una patch per mitigarla. Anche se gli attacchi zero-day catturano gran parte dell'attenzione dei media e della comunità in generale, in quanto professionisti del settore sappiamo che le maggiori vulnerabilità provengono da situazioni simili. Questo è un esempio calzante del motivo per cui questo processo deve essere costante e ripetuto.
In quanto comunità, spesso ci focalizziamo sul codice originale durante la ricerca di bug, ma lavorare specificatamente su aggiornamenti e patch offre un altro aspetto di questa operazione, che potrebbe facilitare la collaborazione nell'individuazione di soluzioni e il miglioramento della sicurezza complessiva.
Questa situazione, inoltre, sottolinea decisamente l'importanza di disporre di ricercatori della sicurezza indipendenti. Desideriamo incoraggiare altri ricercatori della sicurezza a continuare ad analizzare questa correzione e altre patch per la correzione delle vulnerabilità.
In caso di domande e per discutere sui nostri risultati, potete contattarci su Twitter @Akamai_Research per farci sapere cosa ne pensate.