CVE-2024-36971 — Prueba de concepto (solo investigación y análisis)
⚠️ DESCARGO — LEA ESTO ANTES DE USAR ESTE REPOSITORIO
Este repositorio está destinado únicamente a investigación defensiva, análisis y divulgación responsable.
Contiene un archivo de prueba de concepto no explotable llamado CVE-2024-36971 y un fragmento disponible públicamente del encabezado del kernel de Android (sock.h) para ilustrar el área afectada.
No se proporciona código de explotación, comandos de reproducción ni instrucciones paso a paso. No ejecute ningún archivo de este repositorio en dispositivos de producción, sistemas de terceros o redes que no controle. El autor declina toda responsabilidad por el mal uso.
Tabla de contenido
- Descripción general
- Contenido del repositorio
- Resumen técnico de alto nivel
- Acerca del fragmento
sock.h incluido
- Entorno de investigación (alto nivel, no accionable)
- Resultado observado (dispositivo de prueba)
- Divulgación responsable y contacto
- Aviso legal y ético
1. Descripción general
CVE-2024-36971 es una vulnerabilidad de Use-After-Free (UAF) en el subsistema de red del kernel de Android. La causa raíz es un orden de operaciones inseguro al manejar la caché de destino (dst) utilizada por el enrutamiento de sockets (sk->sk_dst_cache), lo que puede dejar un puntero colgante accesible para rutas de código concurrentes. Este repositorio documenta una PoC de investigación defensiva que demuestra el impacto (inestabilidad del kernel y corrupción de datos) sin proporcionar primitivas de explotación.
Este README explica qué demuestra la PoC, por qué el sock.h incluido es relevante y las restricciones responsables en torno a las pruebas y el uso compartido.
2. Contenido del repositorio
CVE-2024-36971 — archivo fuente de la PoC (conservado en el repositorio por transparencia). No está pensado para ejecutarse; se incluye únicamente con fines de archivo/análisis.
sock.h — fragmento del encabezado público del kernel de Android que muestra las estructuras de socket/destino y los asistentes relevantes para el problema.
README.md — este archivo (documentación y orientación).
3. Resumen técnico de alto nivel (no accionable)
- Causa raíz: orden incorrecto en el manejo de referencias y liberación de los objetos
dst en la ruta de código de la caché de enrutamiento/destino, lo que permite un Use-After-Free (UAF).
- Vector de activación (alto nivel): una ruta de red que ejercita la ruta de código
__dst_negative_advice() / caché de destino en el kernel puede provocar la condición UAF. Este repositorio no proporciona instrucciones para activarla.
- Impacto observado: corrupción de la memoria del kernel, inestabilidad y, en circunstancias probadas, corrupción de los metadatos de almacenamiento que conduce a un estado de arranque de «datos corruptos» (soft-brick).
- Estado de explotabilidad: la PoC demuestra el impacto y confirma la presencia de un bug crítico del kernel. La corrupción observada en las pruebas fue no determinista y destructiva, no un exploit estable y fiable para ejecución de código. Convertir el bug en un exploit fiable requeriría manipulación avanzada del heap y control del asignador; dicho trabajo está fuera del alcance de este repositorio y no se proporciona.
4. Acerca del fragmento sock.h incluido
El encabezado sock.h es un encabezado de kernel disponible públicamente (obtenido de los árboles del kernel de Android) que contiene:
- definiciones de
struct sock y estructuras de red relacionadas;
- referencias a
sk_dst_cache (la caché de destino del socket) y asistentes para obtener/establecer referencias de destino;
- patrones de acceso RCU/refcount y uso de
dst_release().
Este fragmento se incluye para mostrar las estructuras y ubicaciones de código exactas que contextualizan CVE-2024-36971. El encabezado respalda la explicación de este README mostrando los campos de datos y funciones cuyo orden o sincronización es crítico para la corrección.
5. Entorno de investigación (alto nivel, no accionable)
Nota: lo siguiente es una lista de capacidades y herramientas típicas que los investigadores de seguridad utilizan en un laboratorio controlado. Es intencionalmente no accionable: sin comandos, sin scripts, sin valores de parámetros.
Capacidades recomendadas para una investigación de kernel segura y aislada:
- Una red de prueba aislada o laboratorio sin conexión externa (air-gapped) para garantizar que no haya impacto accidental en sistemas de terceros.
- Hardware de prueba dedicado que sea de su propiedad y que pueda reflashear/borrar por completo (no utilice dispositivos de producción ni de terceros).
- Virtualización (p. ej., QEMU/KVM) para compilar y depurar imágenes del kernel en un entorno controlado.
- El árbol fuente del kernel de Android y un entorno de compilación local para compilar kernels instrumentados/de depuración y generar mapas de símbolos.
- Herramientas y flujos de trabajo de depuración/registro:
adb/fastboot para el acceso al dispositivo, recopilación de dmesg/last_kmsg y herramientas para mapear direcciones del kernel a líneas de código fuente (archivos de símbolos, addr2line, etc.).
- Depuración del kernel y sanitizadores (según corresponda), como KASAN/KMSAN, ftrace y otras utilidades de rastreo para detectar violaciones de seguridad de memoria sin intentar explotarlas.
- Recopilación y almacenamiento seguro de artefactos para registros, backtraces y evidencia fotográfica.
6. Resultado observado (dispositivo probado)
- Dispositivo probado: Nothing Phone (1): dispositivo propiedad del investigador y bajo su control. El dispositivo ejecutaba una revisión del kernel que no incluía el parche en el momento de la prueba.
- Contexto de la prueba: la PoC se ejecutó desde la misma red local que el dispositivo objetivo en un entorno de prueba aislado.
- Resultado: después de múltiples envíos del tráfico de la PoC, el dispositivo experimentó una grave corrupción de la memoria del kernel. La corrupción se propagó a los metadatos de almacenamiento y el dispositivo arrancó mostrando un error que indicaba «datos corruptos». El dispositivo requirió reparación/reflash para volver a un estado utilizable (soft-brick).
- Advertencia importante: este comportamiento fue destructivo y no determinista; la PoC produjo corrupción y pérdida de datos en lugar de una primitiva fiable de ejecución de código. El investigador detuvo las pruebas después de observar el comportamiento destructivo: el objetivo era verificar el impacto, no desarrollar un exploit funcional.
Este proyecto sigue los principios de divulgación responsable. Si usted es un proveedor, mantenedor o contacto de seguridad y necesita artefactos de diagnóstico adicionales no accionables (backtraces completos, registros saneados o volcados forenses) para validar o remediar el problema, comuníquese con el propietario del repositorio a través de un canal seguro. Los enfoques preferidos incluyen:
- abrir un problema (issue) privado en GitHub e indicar un canal de comunicación seguro, o
- contacto directo por correo electrónico cifrado con PGP (proporcione su clave pública o solicite la clave del investigador).
El investigador cooperará con proveedores/mantenedores validados y compartirá material de diagnóstico adicional bajo términos seguros y apropiados. Los pasos de reproducción reproducibles no se publicarán públicamente.
8. Aviso legal y ético
- Este repositorio se proporciona tal cual únicamente con fines de investigación, educativos y defensivos.
- El autor no aprueba el uso malintencionado y declina toda responsabilidad por cualquier mal uso.
- No utilice los materiales contenidos en sistemas que no posea o administre.
- Respete siempre las leyes aplicables, las políticas institucionales y los procesos de divulgación coordinada de los proveedores.