eBPF-i alamsüsteemi haavatavus, mis võimaldab koodi käivitamist Linuxi tuuma tasemel

eBPF-i alamsüsteemis on tuvastatud haavatavus (CVE-2021-4204), mis võimaldab käivitada töötlejaid Linuxi tuuma sees spetsiaalses virtuaalmasinas koos JIT-ga, võimaldades kohalikul privilegeerimata kasutajal saavutada privileegide eskalatsiooni ja käivitada oma koodi Linuxi kerneli tase. Probleem on ilmnenud alates Linuxi kernelist 5.8 ja jääb parandamata (sealhulgas versioon 5.16). Distributsioonide probleemi lahendamiseks genereeritavate värskenduste olekut saab jälgida järgmistel lehtedel: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. On teatatud, et on loodud töötav exploit, mis on plaanis avaldada 18. jaanuaril (kasutajatele ja arendajatele on antud nädal aega haavatavuse parandamiseks).

Haavatavuse põhjuseks on täitmiseks edastatud eBPF-programmide vale kontrollimine. eBPF-i alamsüsteem pakub abifunktsioone, mille õiget kasutamist kontrollib spetsiaalne kontrollija. Mõned funktsioonid nõuavad PTR_TO_MEM väärtuse argumendina edastamist ja puhvri võimaliku ületäitumise vältimiseks peab kontrollija teadma argumendiga seotud mälu suurust. Funktsioonide bpf_ringbuf_submit ja bpf_ringbuf_discard puhul ei edastatud kontrollijale andmeid ülekantud mälu suuruse kohta, mida saaks kasutada spetsiaalselt loodud eBPF-koodi täitmisel puhvri piirist väljapoole jäävate mälupiirkondade ülekirjutamiseks.

Rünnaku läbiviimiseks peab kasutaja saama laadida oma BPF-i programmi ja paljud hiljutised Linuxi distributsioonid blokeerivad selle võimaluse vaikimisi (sh. privilegeerimata juurdepääs eBPF-ile on nüüd tuumas endas vaikimisi keelatud, alates versioonist 5.16). Näiteks saab haavatavust ära kasutada Ubuntu 20.04 LTS vaikekonfiguratsioonis, kuid keskkondades Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 ja Fedora 33 ilmub see ainult siis, kui administraator on määranud parameeter kernel.unprivileged_bpf_disabled väärtuseks 0. Haavatavuse blokeerimise lahendusena saate käsuga "sysctl -w kernel.unprivileged_bpf_disabled=1" takistada BPF-programmide käivitamist privilegeerimata kasutajatel.

Allikas: opennet.ru

Lisa kommentaar