Use-After-Free
O que é Use-After-Free?
Use-After-FreeBug de segurança de memória em que um programa continua a usar memória já libertada, frequentemente permitindo controlar o estado de objetos e desviar a execução.
Um use-after-free (UAF) ocorre quando um ponteiro continua a referenciar um objeto depois de free()/delete ter libertado a memória. Se o atacante conseguir que a mesma região de memória seja realocada como um objeto diferente — uma técnica chamada heap grooming ou "heap feng shui" — o ponteiro pendente dá-lhe efetivamente uma confusão de tipos, ideal para sobrescrever ponteiros de função virtual, endereços de callback ou estado sensível. Os UAF dominam a exploração de navegadores e kernels e estão catalogados como CWE-416.
Casos conhecidos ilustram o impacto. A CVE-2018-8174, um UAF no motor VBScript acessível através do Internet Explorer, foi armada no zero-day "Double Kill" e incorporada em kits de exploração. A CVE-2022-0609, um UAF no componente Animation do Chrome, foi explorada no terreno como zero-day; o Threat Analysis Group da Google atribuiu as campanhas a atores estatais norte-coreanos que visavam empresas de media e fintech. A prevalência destes bugs é a razão pela qual a Microsoft e a Google relatam ambas que cerca de 70% das suas CVEs históricas resultam de erros de segurança de memória, impulsionando o movimento da indústria rumo ao Rust.
flowchart TD A[Objeto alocado, ponteiro P referencia-o] --> B["free() / delete chamado"] B --> C[P fica pendente, memoria devolvida ao alocador] C --> D[Atacante satura a heap para reocupar o espaco] D --> E[Mesma memoria realocada como objeto controlado pelo atacante] E --> F[Programa desreferencia P] F --> G[Confusao de tipos -> sequestro da vtable / fluxo de controlo]
As defesas incluem modelos rigorosos de propriedade (RAII, smart pointers), linguagens com garbage collection ou memory-safe como o Rust, alocadores endurecidos (quarentena, pools de isolamento, GWP-ASan) e testes com KASAN/Valgrind. Os navegadores também implementam proteções no estilo MiraclePtr e PartitionAlloc.
● Exemplos
- 01
CVE-2018-8174 (motor VBScript): UAF explorada por atores APT.
- 02
CVE-2022-0609 (animação no Chrome): UAF usada como 0-day.
● Perguntas frequentes
O que é Use-After-Free?
Bug de segurança de memória em que um programa continua a usar memória já libertada, frequentemente permitindo controlar o estado de objetos e desviar a execução. Pertence à categoria Vulnerabilidades da cibersegurança.
O que significa Use-After-Free?
Bug de segurança de memória em que um programa continua a usar memória já libertada, frequentemente permitindo controlar o estado de objetos e desviar a execução.
Como se defender contra Use-After-Free?
As defesas contra Use-After-Free costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Use-After-Free?
Nomes alternativos comuns: UAF.