Heap Spraying
O que é Heap Spraying?
Heap SprayingPrimitiva de exploracao que preenche a heap com muitas copias do payload para que um ponteiro corrompido caia, com alta probabilidade, em dados do atacante.
O heap spray povoa grandes regioes de memoria com copias previsiveis de um NOP-sled e shellcode (ou, em variantes modernas, cadeias ROP e vtables falsas). Quando o atacante despoleta uma corrupcao de memoria, por exemplo use-after-free ou type confusion num browser, dirige o ponteiro corrompido para um endereco provavel (historicamente 0x0c0c0c0c), onde o spray garante os bytes desejados. A tecnica foi popularizada pelo exploit do Internet Explorer de Skylined em 2004 e mantem-se comum em exploits de browsers, documentos e parseamento de fontes. Defesas modernas: ASLR de alta entropia, heaps particionadas (PartitionAlloc, Heap Isolation no Edge), CFI e mitigacoes ao JIT.
● Exemplos
- 01
Alocar centenas de MB de strings JavaScript com shellcode para tornar 0x0c0c0c0c executavel apos um use-after-free.
- 02
Exploits do Adobe Flash que usam sprays de Vector<uint> para colocar cadeias ROP.
● Perguntas frequentes
O que é Heap Spraying?
Primitiva de exploracao que preenche a heap com muitas copias do payload para que um ponteiro corrompido caia, com alta probabilidade, em dados do atacante. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa Heap Spraying?
Primitiva de exploracao que preenche a heap com muitas copias do payload para que um ponteiro corrompido caia, com alta probabilidade, em dados do atacante.
Como funciona Heap Spraying?
O heap spray povoa grandes regioes de memoria com copias previsiveis de um NOP-sled e shellcode (ou, em variantes modernas, cadeias ROP e vtables falsas). Quando o atacante despoleta uma corrupcao de memoria, por exemplo use-after-free ou type confusion num browser, dirige o ponteiro corrompido para um endereco provavel (historicamente 0x0c0c0c0c), onde o spray garante os bytes desejados. A tecnica foi popularizada pelo exploit do Internet Explorer de Skylined em 2004 e mantem-se comum em exploits de browsers, documentos e parseamento de fontes. Defesas modernas: ASLR de alta entropia, heaps particionadas (PartitionAlloc, Heap Isolation no Edge), CFI e mitigacoes ao JIT.
Como se defender contra Heap Spraying?
As defesas contra Heap Spraying costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Heap Spraying?
Nomes alternativos comuns: Heap spray.
● Termos relacionados
- attacks№ 469
Heap Feng Shui
Tecnica deterministica de moldagem da heap apresentada por Alexander Sotirov em 2007, que organiza alocacoes para colocar objetos vulneraveis junto a outros controlados.
- vulnerabilities№ 1193
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.
- appsec№ 064
ASLR
A aleatorizacao do espaco de enderecos coloca codigo, pilhas, heaps e bibliotecas em posicoes aleatorias da memoria para impedir que um atacante preveja enderecos.
- vulnerabilities№ 131
Buffer overflow
Falha de segurança de memória em que um programa escreve para além do fim de um buffer alocado, corrompendo memória adjacente e permitindo frequentemente execução de código.
● Veja também
- № 564JIT Spray