Ranljivost v podsistemu eBPF, ki omogoča izvajanje kode na ravni jedra Linuxa

V podsistemu eBPF je bila ugotovljena ranljivost (CVE-2021-4204), ki vam omogoča zagon obdelovalcev znotraj jedra Linuxa v posebnem virtualnem stroju z JIT, kar lokalnemu neprivilegiranemu uporabniku omogoča, da doseže stopnjevanje privilegijev in izvede svojo kodo na Raven jedra Linuxa. Težava se pojavlja že od jedra Linuxa 5.8 in ostaja nepopravljena (vključno z izdajo 5.16). Stanje posodobitev, ustvarjenih za odpravo težave v distribucijah, je mogoče spremljati na teh straneh: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Napovedano je bilo, da je bil ustvarjen delujoč exploit, ki naj bi bil objavljen 18. januarja (uporabniki in razvijalci so imeli teden dni časa, da odpravijo ranljivost).

Ranljivost je posledica nepravilnega preverjanja programov eBPF, poslanih v izvajanje. Podsistem eBPF zagotavlja pomožne funkcije, katerih pravilno uporabo preverja poseben overitelj. Nekatere funkcije zahtevajo posredovanje vrednosti PTR_TO_MEM kot argumenta in za preprečitev morebitnih prekoračitev medpomnilnika mora preveritelj poznati velikost pomnilnika, povezanega z argumentom. Za funkciji bpf_ringbuf_submit in bpf_ringbuf_discard podatki o velikosti prenesenega pomnilnika niso bili sporočeni verifikatorju, kar bi se lahko uporabilo za prepis pomnilniških območij onkraj meje vmesnega pomnilnika pri izvajanju posebej zasnovane kode eBPF.

Za izvedbo napada mora biti uporabnik sposoben naložiti lasten program BPF in številne nedavne distribucije Linuxa privzeto blokirajo to možnost (vključno z neprivilegiranim dostopom do eBPF je zdaj privzeto prepovedan v samem jedru, začenši z izdajo 5.16). Ranljivost je na primer mogoče izkoristiti v privzeti konfiguraciji v Ubuntu 20.04 LTS, v okoljih Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 in Fedora 33 pa se pojavi le, če je skrbnik nastavil parameter kernel.unprivileged_bpf_disabled na 0. Kot rešitev za blokiranje ranljivosti lahko neprivilegiranim uporabnikom preprečite izvajanje programov BPF z ukazom “sysctl -w kernel.unprivileged_bpf_disabled=1”.

Vir: opennet.ru

Dodaj komentar