JIT Spray
O que é JIT Spray?
JIT SprayTécnica de exploração que abusa dos compiladores JIT para colocar bytes executáveis escolhidos pelo atacante dentro de páginas de memória legitimamente geradas como executáveis.
O JIT spray é uma técnica de exploração de corrupção de memória usada contra runtimes com compiladores Just-In-Time: motores JavaScript como V8, SpiderMonkey e JSC, o CLR do .NET, a JVM, o ActionScript ou o eBPF. O atacante constrói um programa de alto nível cuja saída compilada pelo JIT, vista como bytes brutos, descodifica em instruções nativas desejadas, permitindo introduzir uma carga nas páginas RWX produzidas pelo JIT. Combinado com uma falha de corrupção de memória que sequestra o fluxo de controlo, o atacante salta para os gadgets espalhados, contornando proteções de execução porque a memória está legitimamente marcada como executável. Mitigações modernas incluem constant blinding, regiões de código aleatórias, separação W^X, ASLR e CFI.
● Exemplos
- 01
Espalhar muitas multiplicações JavaScript cujas constantes imediatas contêm shellcode.
- 02
Usar o JIT do ActionScript para inserir um NOP sled e shellcode na região JIT do Flash Player.
● Perguntas frequentes
O que é JIT Spray?
Técnica de exploração que abusa dos compiladores JIT para colocar bytes executáveis escolhidos pelo atacante dentro de páginas de memória legitimamente geradas como executáveis. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa JIT Spray?
Técnica de exploração que abusa dos compiladores JIT para colocar bytes executáveis escolhidos pelo atacante dentro de páginas de memória legitimamente geradas como executáveis.
Como funciona JIT Spray?
O JIT spray é uma técnica de exploração de corrupção de memória usada contra runtimes com compiladores Just-In-Time: motores JavaScript como V8, SpiderMonkey e JSC, o CLR do .NET, a JVM, o ActionScript ou o eBPF. O atacante constrói um programa de alto nível cuja saída compilada pelo JIT, vista como bytes brutos, descodifica em instruções nativas desejadas, permitindo introduzir uma carga nas páginas RWX produzidas pelo JIT. Combinado com uma falha de corrupção de memória que sequestra o fluxo de controlo, o atacante salta para os gadgets espalhados, contornando proteções de execução porque a memória está legitimamente marcada como executável. Mitigações modernas incluem constant blinding, regiões de código aleatórias, separação W^X, ASLR e CFI.
Como se defender contra JIT Spray?
As defesas contra JIT Spray costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para JIT Spray?
Nomes alternativos comuns: Spray JIT.
● Termos relacionados
- appsec№ 1182
Vulnerabilidade de Confusão de Tipo
Bug de segurança de memória em que o código acede a um objeto usando um tipo incompatível com a sua alocação real, permitindo leitura, escrita ou execução arbitrárias.
- appsec№ 129
Sandbox do Navegador
Camada de isolamento ao nível do sistema operativo que confina o renderer e processos auxiliares do navegador para que código web comprometido não aceda ao sistema de ficheiros nem a outras aplicações.
- 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.
- attacks№ 471
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.
- appsec№ 1075
Canal Lateral de Execução Especulativa
Classe de vulnerabilidades microarquiteturais em que CPUs vazam dados através de caches e preditores depois de executarem instruções especulativamente por caminhos que não deveriam executar.
- vulnerabilities№ 399
Exploit
Pedaço de código, dados ou técnica que tira partido de uma vulnerabilidade para causar comportamento indesejado, como execução de código, escalada de privilégios ou divulgação de informação.