
Prueba de concepto CVE-2021-29155
El sistema de seguimiento de rango para la aritmética de punteros en el dominio especulativo era insuficiente.
Era posible extraer datos del kernel a través de un canal lateral.
Esta es una prueba de concepto con la que se pueden leer hasta 0x5fff bytes fuera de los límites desde el último elemento de nuestro mapa en adelante.
Este problema se solucionó en 5.12 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/kernel/bpf/verifier.c?id=7fedb63a8307dda0ec3b8969a3b233a1dd7ea8e0 y se retroportó a varios kernels LTS.
Sin embargo, si aún estás interesado en cómo funciona esto y quieres ver un exploit de spectre en acción, puedes ejecutar el programa como sudo. Entonces las mitigaciones de spectre no se activan.
Uso:
sudo ./bpf_exploit 0 3 0x0 0x5ff0
Donde 0 3 corresponden a 2 hilos diferentes, que se ejecutan en un núcleo físico diferente para que el exploit funcione.
Para obtener más información y una explicación detallada de este problema, puedes consultar mi tesis de licenciatura [NO TERMINADA POR AHORA]