Vulnerabilidade de Confusão de Tipo
O que é Vulnerabilidade de Confusão de Tipo?
Vulnerabilidade de Confusão de TipoBug 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.
Uma vulnerabilidade de confusão de tipo surge quando um programa lê ou escreve memória através de um ponteiro ou referência cujo tipo declarado difere do tipo real do objeto subjacente. As causas típicas são downcasts incorretos, mau tratamento do polimorfismo ou otimizações especulativas do JIT que assumem uma forma estável que o atacante pode alterar. Quando o runtime trata a estrutura como o tipo errado, métodos, vtables, campos de comprimento e dados inline são mal interpretados, dando ao atacante primitivas de leitura/escrita controladas que escalam frequentemente para execução de código. Motores JavaScript (V8, JSC) e renderers de navegador são alvos frequentes em Pwn2Own. As defesas incluem sistemas de tipos fortes, verificações em runtime, sandboxing e linguagens seguras em memória.
● Exemplos
- 01
CVE-2021-30551: confusão de tipo no V8 explorada como 0-day no Chrome.
- 02
Um static_cast C++ onde dynamic_cast era necessário, permitindo escrita num objeto não relacionado.
● Perguntas frequentes
O que é 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. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa 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.
Como funciona Vulnerabilidade de Confusão de Tipo?
Uma vulnerabilidade de confusão de tipo surge quando um programa lê ou escreve memória através de um ponteiro ou referência cujo tipo declarado difere do tipo real do objeto subjacente. As causas típicas são downcasts incorretos, mau tratamento do polimorfismo ou otimizações especulativas do JIT que assumem uma forma estável que o atacante pode alterar. Quando o runtime trata a estrutura como o tipo errado, métodos, vtables, campos de comprimento e dados inline são mal interpretados, dando ao atacante primitivas de leitura/escrita controladas que escalam frequentemente para execução de código. Motores JavaScript (V8, JSC) e renderers de navegador são alvos frequentes em Pwn2Own. As defesas incluem sistemas de tipos fortes, verificações em runtime, sandboxing e linguagens seguras em memória.
Como se defender contra Vulnerabilidade de Confusão de Tipo?
As defesas contra Vulnerabilidade de Confusão de Tipo costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Vulnerabilidade de Confusão de Tipo?
Nomes alternativos comuns: Cast incorreto, Bug de tipo incorreto.
● Termos relacionados
- 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.
- vulnerabilities№ 667
Corrupção de memória
Termo abrangente para vulnerabilidades em que um programa escreve fora dos limites previstos, comprometendo segurança de tipos, fluxo de controlo ou integridade de dados.
- appsec№ 564
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.
- 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.
- 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.