
Select Bugs From Binary Where Pattern Like CVE-1337-Days
Select Bugs From Binary Where Pattern Like CVE-1337-Days
Abstract
A revisão estática de código é uma forma eficaz de descobrir variantes de vulnerabilidades e primitivas de exploração, mas duas das tarefas mais desafiadoras para a análise estática são a extração eficaz de padrões de código a partir de enormes quantidades de bugs diversos e a busca eficiente de padrões de código em toneladas de módulos diferentes, especialmente para software de código fechado como o Windows.
Esta apresentação discute nossas práticas e experiências com esses dois desafios. Ela cobre principalmente como extraímos quatro padrões de código exclusivos para diferentes tipos de vulnerabilidades e primitivas de exploração, e como os utilizamos para encontrar automaticamente vulnerabilidades e primitivas de exploração no Windows com a ajuda de nossa nova ferramenta de busca de padrões de código binário: Leviathan.
Nesta apresentação, focamos em quatro padrões exclusivos para encontrar vulnerabilidades clássicas de sequestro de arquivos, vulnerabilidades de corrupção de memória em reparse points, vulnerabilidades lógicas de sobrescrita de ACL e primitivas de pool spray para a exploração do RDP no Windows. Especificamente, na parte do padrão de sobrescrita de ACL, mostramos como encontrar uma interessante vulnerabilidade lógica de 0-day no Hyper-V derivada de nossa vulnerabilidade usada no Pwn2Own 2021; ela foi inicialmente rejeitada pela Microsoft, mas finalmente considerada dentro do escopo para um patch e até elegível para o programa de recompensas depois que enviamos um novo vetor de ataque. Revelaremos toda a história por trás disso. Também vale mencionar que, na parte do padrão de primitivas de pool spray, mostramos como encontrar três primitivas de pool spray exclusivas e universais para a exploração do RDP. Elas podem ser usadas na conhecida vulnerabilidade do RDP BlueKeep (CVE-2019-0708) e são diferentes de todas as outras técnicas de exploração públicas. Todos os detalhes, incluindo a definição do modelo de vulnerabilidade, a extração do padrão de vulnerabilidade, a construção da consulta de código, a revisão dos resultados e a criação do PoC em cada caso, são abordados.
Além disso, também apresentamos uma nova ferramenta de linguagem de consulta de código projetada para encontrar automaticamente vulnerabilidades e primitivas de exploração com padrões de código em binários. Alimentada pelas APIs Hexray ctree do IDA Pro e por nossas primitivas principais de busca de padrões de código baseadas nelas, ela não contém apenas recursos como rastreamento de taint e rastreamento de caminhos de código entre binários, mas também possui uma interface de consulta SQL para facilitar todo o processo. Selecione seus próprios bugs e primitivas do binário onde você quiser!