
Seleziona i bug dal binario dove il pattern è simile a CVE-1337-Days
Seleziona Bug Dal Binario Dove Il Pattern È Simile a CVE-1337-Days
Sommario
La revisione statica del codice è un modo efficace per scoprire varianti di vulnerabilità e primitive di sfruttamento, ma due dei compiti più impegnativi per l'analisi statica sono l'estrazione efficace dei pattern di codice da un'enorme quantità di bug diversi e la ricerca efficiente dei pattern di codice in tantissimi moduli differenti, soprattutto per software a sorgente chiuso come Windows.
Questa presentazione illustra le nostre pratiche ed esperienze relative a queste due sfide. Tratta principalmente di come estraiamo quattro pattern di codice unici per diversi tipi di vulnerabilità e primitive di sfruttamento e di come li usiamo per trovare automaticamente vulnerabilità e primitive di sfruttamento su Windows con l'aiuto del nostro nuovo strumento di ricerca di pattern di codice nei binari: Leviathan.
In questa presentazione ci concentriamo su quattro pattern unici per trovare vulnerabilità classiche di file hijacking, vulnerabilità di corruzione della memoria nei reparse point, vulnerabilità logiche di sovrascrittura delle ACL e primitive di pool spray per l'exploit RDP su Windows. Nello specifico, nella parte relativa al pattern di sovrascrittura delle ACL, mostriamo come trovare un'interessante vulnerabilità logica 0-day in Hyper-V derivata dalla vulnerabilità che abbiamo usato in Pwn2Own 2021: inizialmente è stata respinta da Microsoft, ma alla fine è stata considerata nell'ambito di una patch e addirittura ammissibile al programma bounty dopo che abbiamo presentato un nuovo vettore di attacco. Sveleremo l'intera storia che c'è dietro. Vale anche la pena di menzionare che, nella parte relativa al pattern delle primitive di pool spray, mostriamo come trovare tre primitive di pool spray uniche e universali per l'exploit RDP. Possono essere usate nella ben nota vulnerabilità RDP BlueKeep(CVE-2019-0708) e sono diverse da tutte le altre tecniche di sfruttamento pubbliche. Tutti i dettagli, inclusi la definizione del modello di vulnerabilità, l'estrazione del pattern di vulnerabilità, la costruzione della query di codice, la revisione dei risultati e la creazione del PoC in ciascun caso, sono trattati.
Inoltre, presentiamo anche un nuovo strumento basato su un linguaggio di query per il codice, progettato per trovare automaticamente vulnerabilità e primitive di sfruttamento tramite pattern di codice nei binari. Basato sulle API Hexray ctree di IDA Pro e sulle nostre primitive di ricerca di pattern di codice costruite su di esse, non solo include funzionalità come il taint tracking e il tracciamento dei percorsi di codice tra binari diversi, ma dispone anche di un'interfaccia SQL per facilitare l'intero processo. Seleziona i tuoi bug e le tue primitive dal binario dove preferisci!