
Exploit proof-of-concept per CVE-2020-8835, una vulnerabilità del verifier BPF del kernel Linux che abilita l'accesso alla memoria fuori dai limiti e l'escalation dei privilegi. Include istruzioni di compilazione e passaggi di mitigazione basati su sysctl.
Nel kernel Linux 5.5.0 e successivi, il bpf verifier (kernel/bpf/verifier.c)
non limita correttamente i registri per le operazioni a 32 bit,
portando a letture e scritture fuori dai limiti nella memoria del kernel.
Questa vulnerabilità colpisce anche la serie stabile Linux 5.4, a partire da v5.4.7,
poiché il commit introduttivo è stato backportato a quel ramo.
La vulnerabilità è stata corretta in 5.6.1, 5.5.14 e 5.4.29.
La mitigazione per questa vulnerabilità è disponibile impostando il
sysctl 'kernel.unprivileged_bpf_disabled' a '1'.
Ciò disabilita completamente l'accesso non privilegiato alla syscall bpf().
Questo problema è anche mitigato sui sistemi che utilizzano l'avvio
sicuro, a causa della funzione di blocco del kernel che impedisce
il caricamento dei programmi BPF.
gcc -o exploit ./exploit.c
$ sudo sysctl kernel.unprivileged_bpf_disabled=1
$ echo kernel.unprivileged_bpf_disabled=1 | \
sudo tee /etc/sysctl.d/90-CVE-2020-8835.conf
$ sysctl -w kernel.unprivileged_bpf_disabled=1