Vulnerabilitat al subsistema eBPF que permet l'execució de codi a nivell del nucli Linux

S'ha identificat una vulnerabilitat (CVE-2021-4204) al subsistema eBPF, que permet executar controladors dins del nucli Linux en una màquina virtual especial amb JIT, permetent a un usuari local sense privilegis aconseguir l'escalada de privilegis i executar el seu codi a la Nivell del nucli de Linux. El problema ha aparegut des del nucli Linux 5.8 i no s'ha solucionat (inclosa la versió 5.16). L'estat de les actualitzacions que s'estan generant per solucionar el problema a les distribucions es pot fer un seguiment a aquestes pàgines: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. S'ha anunciat que s'ha creat un exploit que funciona, que està previst que es publiqui el 18 de gener (els usuaris i desenvolupadors tenen una setmana per solucionar la vulnerabilitat).

La vulnerabilitat és causada per una verificació incorrecta dels programes eBPF transmesos per a l'execució. El subsistema eBPF proporciona funcions auxiliars, l'ús correcte de les quals és verificat per un verificador especial. Algunes funcions requereixen passar un valor PTR_TO_MEM com a argument, i per evitar possibles desbordaments de memòria intermèdia, el verificador ha de conèixer la mida de la memòria associada a l'argument. Per a les funcions bpf_ringbuf_submit i bpf_ringbuf_discard, les dades sobre la mida de la memòria transferida no es van informar al verificador, que es podria utilitzar per sobreescriure àrees de memòria més enllà del límit de la memòria intermèdia quan s'executava codi eBPF dissenyat especialment.

Per dur a terme un atac, l'usuari ha de poder carregar el seu propi programa BPF, i moltes distribucions de Linux recents bloquegen aquesta capacitat per defecte (inclòs l'accés sense privilegis a eBPF ara està prohibit per defecte al propi nucli, a partir de la versió 5.16). Per exemple, la vulnerabilitat es pot explotar en la configuració per defecte a Ubuntu 20.04 LTS, però als entorns Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 i Fedora 33 només apareix si l'administrador ha configurat el paràmetre kernel.unprivileged_bpf_disabled a 0. Com a solució alternativa per bloquejar la vulnerabilitat, podeu impedir l'execució de programes BPF per part d'usuaris sense privilegis amb l'ordre "sysctl -w kernel.unprivileged_bpf_disabled=1".

Font: opennet.ru

Afegeix comentari