Vundebleco en la eBPF-subsistemo kiu permesas kodekzekuton ĉe la Linukso-kernnivelo

Vulnerabileco (CVE-2021-4204) estis identigita en la eBPF-subsistemo, kiu ebligas al vi ruli pritraktilojn ene de la Linukso-kerno en speciala virtuala maŝino kun JIT, permesante al loka senprivilegia uzanto atingi privilegian eskaladon kaj efektivigi sian kodon ĉe la Linukso-kerna nivelo. La problemo aperas ekde Linukso-kerno 5.8 kaj restas nefiksita (inkluzive de eldono 5.16). La stato de ĝisdatigoj estantaj generitaj por ripari la problemon en distribuoj povas esti spurita sur ĉi tiuj paĝoj: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Estis anoncite, ke funkcianta ekspluato estis kreita, kiu estas planita esti publikigita la 18-an de januaro (uzantoj kaj programistoj ricevis semajnon por ripari la vundeblecon).

La vundebleco estas kaŭzita de malĝusta konfirmo de eBPF-programoj elsenditaj por ekzekuto. La subsistemo eBPF disponigas helpajn funkciojn, kies ĝusta uzo estas kontrolita de speciala kontrolilo. Kelkaj funkcioj postulas pasi PTR_TO_MEM-valoron kiel argumenton, kaj por malhelpi eblajn bufrosuperfluojn, la kontrolilo devas scii la grandecon de la memoro asociita kun la argumento. Por la bpf_ringbuf_submit kaj bpf_ringbuf_discard funkcioj, datenoj pri la grandeco de la transdonita memoro ne estis raportitaj al la kontrolilo, kiu povus esti uzita por anstataŭigi memorareojn preter la bufrolimo dum efektivigado de speciale dizajnita eBPF-kodo.

Por fari atakon, la uzanto devas povi ŝarĝi sian propran BPF-programon, kaj multaj lastatempaj Linukso-distribuoj blokas ĉi tiun kapablon defaŭlte (inkluzive de senprivilegia aliro al eBPF nun estas malpermesita defaŭlte en la kerno mem, komencante per eldono 5.16). Ekzemple, la vundebleco povas esti ekspluatata en la defaŭlta agordo en Ubuntu 20.04 LTS, sed en la medioj Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 kaj Fedora 33 ĝi aperas nur se la administranto starigis la parametro kernel.unprivileged_bpf_disabled al 0. Kiel solvo por blokado de la vundebleco, vi povas malhelpi la ekzekuton de BPF-programoj de senprivilegiaj uzantoj per la komando "sysctl -w kernel.unprivileged_bpf_disabled=1".

fonto: opennet.ru

Aldoni komenton