
Implementación de investigación que demuestra interacción con el subsistema eBPF de Linux relacionada con CVE-2021-3490. Incluye creación de mapas BPF, envoltorios de syscall, configuración de espacios de nombres y análisis del verificador. Solo con fines educativos y de investigación en seguridad.
Implementación de investigación que demuestra la interacción con el subsistema eBPF de Linux relacionado con CVE-2021-3490. Incluye creación de mapas BPF, envoltorios de syscalls, configuración de espacios de nombres y análisis del verificador. Solo con fines educativos y de investigación en seguridad.
CVE-2021-3490 – Análisis de seguimiento de límites del verificador eBPF
Resumen
Este repositorio contiene una implementación en C que explora el subsistema eBPF del kernel de Linux en relación con CVE-2021-3490, una vulnerabilidad que involucra un seguimiento incorrecto de límites de 32 bits en el verificador eBPF.
El objetivo de este proyecto es comprender cómo funciona internamente la llamada al sistema bpf(), cómo se crean y gestionan los mapas BPF desde el espacio de usuario, y cómo el verificador maneja las restricciones de los registros. Es un proyecto de investigación y aprendizaje centrado en los internos del kernel y el análisis de seguridad.
Este código no está destinado para uso en producción.
Antecedentes
eBPF permite que programas en espacio de usuario carguen bytecode verificado en el kernel de Linux. Antes de la ejecución, el verificador del kernel comprueba que el programa:
En versiones vulnerables del kernel, el verificador rastreaba incorrectamente los límites de 32 bits durante ciertas operaciones ALU. Esta falla podría permitir que programas manipulados eludieran la lógica de validación.
Para detalles oficiales:
Lo que demuestra este proyecto
Esta implementación se centra en:
Está diseñado para ayudar a comprender cómo el espacio de usuario interactúa con la infraestructura BPF del kernel.
Este repositorio no incluye lógica de payload de exploit automatizada.
Entorno probado
Puedes comprobar tu versión del kernel con:
uname -r
El comportamiento puede diferir en kernels parcheados o más recientes.
Compilación
Compilar usando GCC:
gcc -o exploit exploit.c -lpthread
No se requieren librerías externas más allá de los encabezados estándar de Linux.
Uso
Ejecutar el programa:
./exploit
El programa:
Configurará espacios de nombres de usuario y de red Creará un mapa BPF Insertará un elemento Consultará metadatos del mapa Mostrará los resultados de ejecución
Nota de seguridad
Este proyecto es para:
No ejecute este código en sistemas sin la autorización adecuada.
Objetivos de aprendizaje
A través de este proyecto, puedes comprender:
Cómo el kernel de Linux expone la interfaz BPF Cómo se estructuran los mapas BPF Cómo la lógica del verificador interactúa con las entradas del espacio de usuario Cómo se construyen manualmente las syscalls de bajo nivel