Mga kahinaan sa eBPF na maaaring makalampas sa proteksyon ng pag-atake ng Spectre 4

Dalawang kahinaan ang natukoy sa Linux kernel na nagbibigay-daan sa eBPF subsystem na i-bypass ang proteksyon ng pag-atake ng Spectre v4 (SSB, Speculative Store Bypass). Gamit ang isang unprivileged BPF program, ang isang attacker ay maaaring lumikha ng mga kondisyon para sa speculative execution ng ilang mga operasyon at matukoy ang mga nilalaman ng mga arbitrary na lugar ng kernel memory. Ang mga escort eBPF subsystem sa kernel ay nakakuha ng access sa isang prototype na pagsasamantala na nagpapakita ng posibilidad na gumawa ng mga pag-atake sa pagsasanay. Ang mga problema ay naayos sa anyo ng mga patch (1, 2) na magiging bahagi ng susunod na pag-update ng kernel ng Linux. Ang mga update sa mga distribusyon ay hindi pa nabuo (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Ang paraan ng pag-atake ng Spectre 4 ay batay sa pagpapanumbalik ng data na naayos sa cache ng processor pagkatapos itapon ang resulta ng haka-haka na pagpapatupad ng mga operasyon kapag nagpoproseso ng mga alternating write at read na mga operasyon gamit ang hindi direktang pagtugon. Kapag ang isang read operation ay sumunod sa isang write operation (halimbawa, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), ang read address offset ay maaaring kilala na dahil sa mga katulad na operasyon na ginagawa (read operations ay ginaganap mas madalas at ang isang pagbabasa ay maaaring gawin mula sa cache) at ang processor ay maaaring magsagawa ng haka-haka na pagbasa bago ang isang pagsulat nang hindi naghihintay na makalkula ang write indirection offset.

Kung, pagkatapos kalkulahin ang offset, ang isang intersection ng mga lugar ng memorya para sa pagsulat at pagbabasa ay nakita, ang processor ay itatapon na lamang ang nakuha nang resulta ng pagbabasa at ulitin ang operasyong ito. Ang feature na ito ay nagbibigay-daan sa read instruction na ma-access ang lumang halaga sa ilang address habang hindi pa natatapos ang operasyon ng tindahan. Matapos itapon ang isang hindi matagumpay na operasyong haka-haka, ang mga bakas ng pagpapatupad nito ay mananatili sa cache, pagkatapos kung saan ang isa sa mga pamamaraan para sa pagtukoy ng mga nilalaman ng cache batay sa pagsusuri ng mga pagbabago sa oras ng pag-access sa naka-cache at hindi naka-cache na data ay maaaring magamit upang makuha. ito.

Ang unang kahinaan (CVE-2021-35477) ay sanhi ng isang depekto sa mekanismo ng pag-verify ng programa ng BPF. Upang maprotektahan laban sa pag-atake ng Spectre 4, ang verifier ay nagdaragdag ng karagdagang pagtuturo pagkatapos ng potensyal na problemang mga operasyon ng tindahan sa memorya, na iniimbak ang halaga ng zero upang mapatalsik ang mga bakas ng nakaraang operasyon. Ang zero write operation ay dapat na napakabilis at harangan ang speculative execution, dahil nakadepende lang ito sa pointer sa BPF stack frame. Ngunit sa katunayan, naging posible na lumikha ng mga kondisyon kung saan ang pagtuturo na humahantong sa speculative execution ay may oras na maisakatuparan bago ang preemptive store operation.

Ang pangalawang kahinaan (CVE-2021-3455) ay nauugnay sa katotohanan na kapag ang potensyal na mapanganib na mga operasyon sa pag-save ng memorya ay nakita ng taga-verify ng BPF, hindi isinasaalang-alang ang mga hindi nasimulang lugar ng BPF stack, ang unang operasyon ng pagsulat kung saan ay hindi protektado. . Ang tampok na ito ay humahantong sa posibilidad na magsagawa ng isang speculative read operation, depende sa isang uninitialized memory area, bago magsagawa ng isang pagtuturo sa tindahan. Ang bagong memorya para sa BPF stack ay inilalaan nang hindi sinusuri ang mga nilalaman na nasa inilaan na memorya, at mayroong isang paraan upang pamahalaan ang mga nilalaman ng lugar ng memorya na pagkatapos ay ilalaan sa BPF stack bago magsimula ang BPF program.

Pinagmulan: opennet.ru

Magdagdag ng komento