Vulnerabilitats al subsistema eBPF del nucli Linux

S'ha identificat una vulnerabilitat (CVE-2021-29154) al subsistema eBPF, que permet executar controladors per al seguiment, l'anàlisi del funcionament dels subsistemes i la gestió del trànsit, executats dins del nucli Linux en una màquina virtual especial amb JIT, que permet una usuari local per aconseguir l'execució del seu codi a nivell del nucli. El problema apareix fins al llançament de 5.11.12 (inclòs) i encara no s'ha solucionat a les distribucions (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). La correcció està disponible com a pedaç.

Segons els investigadors que van identificar la vulnerabilitat, van poder desenvolupar un prototip de funcionament de l'explotació per a sistemes x32 de 64 i 86 bits, que pot ser utilitzat per un usuari sense privilegis. Tanmateix, Red Hat assenyala que la gravetat del problema depèn de si l'usuari pot accedir a la trucada del sistema eBPF. Per exemple, a RHEL i la majoria de les altres distribucions de Linux amb la configuració predeterminada, la vulnerabilitat es pot explotar si BPF JIT està habilitat i l'usuari té drets CAP_SYS_ADMIN. Com a solució alternativa, es recomana desactivar BPF JIT mitjançant l'ordre: echo 0 > /proc/sys/net/core/bpf_jit_enable

El problema és causat per un error en el càlcul de la compensació de les instruccions de branca durant el procés de generació de codi màquina del compilador JIT. En particular, a l'hora de generar instruccions de branca, no es té en compte que el desplaçament pot canviar després de passar per l'etapa d'optimització. Aquest defecte es pot utilitzar per generar codi de màquina anòmal i executar-lo al nivell del nucli.

Cal destacar que aquesta no és l'única vulnerabilitat del subsistema eBPF recentment. A finals de març, es van identificar dues vulnerabilitats més al nucli (CVE-2020-27170, CVE-2020-27171), que permeten utilitzar eBPF per evitar la protecció contra vulnerabilitats de classe Spectre, que permeten determinar el contingut de la memòria del nucli. com a conseqüència de la creació de condicions per a l'execució especulativa de determinades operacions. L'atac Spectre requereix la presència d'una determinada seqüència d'ordres en codi privilegiat que condueix a l'execució especulativa d'instruccions. A eBPF, s'han trobat diverses maneres de generar aquestes instruccions mitjançant manipulacions amb programes BPF transmesos per a l'execució.

La vulnerabilitat CVE-2020-27170 és causada per la manipulació del punter al verificador BPF que fa que les operacions especulatives accedeixin a una àrea fora dels límits de la memòria intermèdia. La vulnerabilitat CVE-2020-27171 es deu a un error de desbordament de nombres enters quan es treballa amb punters, que provoca un accés especulatiu a dades fora de la memòria intermèdia. Aquests problemes ja s'han solucionat a les versions del nucli 5.11.8, 5.10.25, 5.4.107, 4.19.182 i 4.14.227, i també s'han inclòs a les actualitzacions del nucli per a la majoria de distribucions de Linux. Els investigadors han preparat un prototip d'explotació que permet a un usuari sense privilegis extreure dades de la memòria del nucli.

Font: opennet.ru

Afegeix comentari