Vulnerabilidad de Confusión de Tipos
¿Qué es Vulnerabilidad de Confusión de Tipos?
Vulnerabilidad de Confusión de TiposFallo de seguridad de memoria en el que el código accede a un objeto usando un tipo incompatible con su asignación real, permitiendo lectura, escritura o ejecución arbitrarias.
Una vulnerabilidad de confusión de tipos aparece cuando un programa lee o escribe memoria a través de un puntero o referencia cuyo tipo declarado difiere del tipo real del objeto subyacente. Las causas típicas son downcasts erróneos, mal manejo de polimorfismo u optimizaciones especulativas del JIT que asumen una forma estable que el atacante puede alterar. Cuando el runtime trata una estructura como un tipo incorrecto, los métodos, vtables, campos de longitud y datos inline se malinterpretan, otorgando primitivas de lectura/escritura controladas que suelen escalar a ejecución de código. Motores de JavaScript como V8 y JSC, así como renderers de navegador, son objetivos frecuentes y aparecen en Pwn2Own. Las defensas incluyen sistemas de tipos fuertes, comprobaciones en runtime, sandboxing y lenguajes seguros en memoria.
● Ejemplos
- 01
CVE-2021-30551, confusión de tipos en V8 explotada como 0-day en Chrome.
- 02
Un static_cast de C++ donde se requería dynamic_cast, permitiendo escribir en otro objeto.
● Preguntas frecuentes
¿Qué es Vulnerabilidad de Confusión de Tipos?
Fallo de seguridad de memoria en el que el código accede a un objeto usando un tipo incompatible con su asignación real, permitiendo lectura, escritura o ejecución arbitrarias. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Vulnerabilidad de Confusión de Tipos?
Fallo de seguridad de memoria en el que el código accede a un objeto usando un tipo incompatible con su asignación real, permitiendo lectura, escritura o ejecución arbitrarias.
¿Cómo funciona Vulnerabilidad de Confusión de Tipos?
Una vulnerabilidad de confusión de tipos aparece cuando un programa lee o escribe memoria a través de un puntero o referencia cuyo tipo declarado difiere del tipo real del objeto subyacente. Las causas típicas son downcasts erróneos, mal manejo de polimorfismo u optimizaciones especulativas del JIT que asumen una forma estable que el atacante puede alterar. Cuando el runtime trata una estructura como un tipo incorrecto, los métodos, vtables, campos de longitud y datos inline se malinterpretan, otorgando primitivas de lectura/escritura controladas que suelen escalar a ejecución de código. Motores de JavaScript como V8 y JSC, así como renderers de navegador, son objetivos frecuentes y aparecen en Pwn2Own. Las defensas incluyen sistemas de tipos fuertes, comprobaciones en runtime, sandboxing y lenguajes seguros en memoria.
¿Cómo defenderse de Vulnerabilidad de Confusión de Tipos?
Las defensas contra Vulnerabilidad de Confusión de Tipos combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Vulnerabilidad de Confusión de Tipos?
Nombres alternativos comunes: Mal cast, Bug de tipo incorrecto.
● Términos relacionados
- vulnerabilities№ 1193
Uso después de liberar
Fallo de memoria en el que un programa sigue usando memoria ya liberada, lo que suele permitir controlar el estado de objetos y secuestrar la ejecución.
- vulnerabilities№ 667
Corrupción de memoria
Término paraguas para vulnerabilidades en las que un programa escribe fuera de los límites previstos, comprometiendo seguridad de tipos, flujo de control o integridad de datos.
- appsec№ 564
JIT Spray
Técnica de explotación que abusa de los compiladores JIT para plantar bytes ejecutables elegidos por el atacante dentro de páginas de memoria generadas legítimamente como ejecutables.
- appsec№ 129
Sandbox del Navegador
Capa de aislamiento a nivel de sistema operativo que confina el renderer y procesos auxiliares del navegador para que el código web comprometido no acceda al sistema de archivos u otras aplicaciones.
- appsec№ 1075
Canal Lateral por Ejecución Especulativa
Clase de vulnerabilidades microarquitectónicas en las que las CPU filtran datos por cachés y predictores tras ejecutar instrucciones especulativamente por rutas que no debían ejecutarse.
- vulnerabilities№ 399
Exploit
Código, datos o técnica que aprovecha una vulnerabilidad para provocar un comportamiento no previsto, como ejecución de código, escalada de privilegios o fuga de información.