Vundeblecoj en la eBPF-subsistemo de la Linukso-kerno

Vulnerabileco (CVE-2021-29154) estis identigita en la subsistemo eBPF, kiu ebligas al vi ruli traktilojn por spurado, analizo de la funkciado de subsistemoj kaj administrado de trafiko, efektivigita ene de la Linukso-kerno en speciala virtuala maŝino kun JIT, kiu permesas loka uzanto por atingi ekzekuton de sia kodo ĉe la kernnivelo. La problemo aperas ĝis la eldono de 5.11.12 (inkluzive) kaj ankoraŭ ne estis riparita en distribuoj (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). La riparo estas disponebla kiel flikaĵo.

Laŭ la esploristoj, kiuj identigis la vundeblecon, ili povis evoluigi funkciantan prototipon de la ekspluato por 32- kaj 64-bita x86-sistemoj, kiu povas esti uzata de senprivilegia uzanto. Tamen, Red Hat notas, ke la severeco de la problemo dependas de ĉu la sistemvoko eBPF estas alirebla por la uzanto. Ekzemple, sur RHEL kaj la plej multaj aliaj Linukso-distribuoj en la defaŭlta agordo, la vundebleco povas esti ekspluatata se BPF JIT estas ebligita kaj la uzanto havas CAP_SYS_ADMIN-rajtojn. Kiel solvo, rekomendas malŝalti BPF JIT uzante la komandon: echo 0 > /proc/sys/net/core/bpf_jit_enable

La problemo estas kaŭzita de eraro en kalkulado de la ofseto por branĉaj instrukcioj dum la maŝinkoda genera procezo de la JIT-kompililo. Aparte, kiam oni generas branĉajn instrukciojn, ĝi ne konsideras, ke la ofseto povas ŝanĝiĝi post trapaso de la optimumigo. Ĉi tiu difekto povas esti uzata por generi nenormalan maŝinkodon kaj efektivigi ĝin ĉe la kernnivelo.

Estas rimarkinde, ke ĉi tio ne estas la sola vundebleco en la subsistemo eBPF lastatempe. Fine de marto, du pliaj vundeblecoj estis identigitaj en la kerno (CVE-2020-27170, CVE-2020-27171), ebligante uzi eBPF por preteriri protekton kontraŭ vundeblecoj de la klaso Spectre, kiuj ebligas determini la enhavon de la memoro de la kerno. kiel rezulto de kreado de kondiĉoj por la spekulativa ekzekuto de iuj operacioj. La Spectre-atako postulas la ĉeeston de certa sekvenco de komandoj en privilegiita kodo kiu kondukas al konjekta plenumo de instrukcioj. En eBPF, pluraj manieroj estis trovitaj generi tiajn instrukciaĵon tra manipuladoj kun BPF-programoj elsenditaj por ekzekuto.

La vundebleco CVE-2020-27170 estas kaŭzita de montrilo-manipulado en la BPF-kontrolilo, kiu igas spekulajn operaciojn aliri areon ekster la bufrolimoj. La vundebleco CVE-2020-27171 ŝuldiĝas al entjera subflua eraro kiam oni laboras kun montriloj, kondukante al konjekta aliro al datumoj ekster la bufro. Ĉi tiuj problemoj jam estis solvitaj en kernaj eldonoj 5.11.8, 5.10.25, 5.4.107, 4.19.182 kaj 4.14.227, kaj ankaŭ estis inkluditaj en kernaj ĝisdatigoj por la plej multaj Linuksaj distribuoj. Esploristoj preparis prototipan ekspluaton, kiu permesas al senprivilegia uzanto ĉerpi datumojn el kernmemoro.

fonto: opennet.ru

Aldoni komenton