
Prova de Conceito CVE-2021-29155
O sistema de rastreamento de intervalo para aritmética de ponteiros no domínio especulativo era insuficiente.
Era possível extrair dados do kernel através de um canal lateral.
Esta é uma prova de conceito que permite ler até 0x5fff bytes fora dos limites a partir do último elemento do nosso mapa em diante.
Este problema foi corrigido no 5.12 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/kernel/bpf/verifier.c?id=7fedb63a8307dda0ec3b8969a3b233a1dd7ea8e0 e backportado para diversos kernels LTS.
No entanto, se você ainda estiver interessado em como isso funciona e ver um exploit Spectre em ação, pode executar o programa como sudo. Então as mitigações do Spectre não entram em ação.
Uso:
sudo ./bpf_exploit 0 3 0x0 0x5ff0
Onde 0 e 3 correspondem a 2 threads diferentes, que executam em um núcleo físico diferente para o exploit funcionar.
Para mais informações e uma explicação detalhada deste problema, você pode dar uma olhada na minha tese de bacharelado [NÃO FINALIZADA NO MOMENTO]