Ang mga kahuyangan sa eBPF nga nagtugot sa proteksyon sa pag-atake sa Spectre 4 nga malaktawan

Duha ka mga kahuyangan ang nahibal-an sa Linux kernel nga nagtugot sa eBPF subsystem nga magamit sa pag-bypass sa proteksyon batok sa pag-atake sa Spectre v4 (SSB, Speculative Store Bypass). Pinaagi sa paggamit sa usa ka unprivileged BPF nga programa, ang usa ka tig-atake makahimo sa mga kondisyon alang sa speculative nga pagpatuman sa pipila ka mga operasyon ug pagtino sa mga sulod sa arbitraryong mga dapit sa kernel memory. Ang mga tigmentinar sa mga subsystem sa eBPF sa kernel nakadawat og access sa usa ka prototype nga pagpahimulos nga nagpakita sa abilidad sa paghimo sa mga pag-atake sa praktis. Ang mga problema naayo sa porma sa mga patch (1, 2), nga ilakip sa sunod nga pag-update sa kernel sa Linux. Ang mga update sa mga distribution kits wala pa nahimo (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Ang pamaagi sa pag-atake sa Spectre 4 gibase sa pagpasig-uli sa datos nga gitipigan sa cache sa processor human isalikway ang resulta sa espekulatibo nga pagpatuman sa mga operasyon sa pagproseso sa alternating write ug read nga mga operasyon gamit ang dili direkta nga pagtubag. Kung ang usa ka read operation nagsunod sa usa ka write operation (pananglitan, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), ang offset sa read address mahimong nahibal-an na tungod sa susama nga mga operasyon nga gihimo (read operations mas kanunay nga gihimo ug ang mga pagbasa mahimo’g himuon gikan sa cache) ug ang processor mahimo nga ispekulatibo nga maghimo mga pagbasa sa wala pa isulat nga wala maghulat nga makalkulo ang indirection offset sa pagsulat.

Kung, pagkahuman sa pagkalkulo sa offset, usa ka intersection sa mga lugar sa memorya alang sa pagsulat ug pagbasa ang nakit-an, ang processor yano nga isalikway ang nakuha na nga nakuha nga resulta sa pagbasa ug sublion kini nga operasyon. Kini nga bahin nagtugot sa usa ka instruksyon sa pagbasa sa pag-access sa usa ka daan nga bili sa pipila ka adres samtang ang operasyon sa tindahan wala pa mahuman. Human sa pagsalikway sa usa ka dili malampuson nga espekulatibo nga operasyon, ang mga pagsubay sa pagpatuman niini magpabilin sa cache, nga human niana ang usa sa mga pamaagi sa pagtino sa mga sulod sa cache mahimong gamiton aron makuha kini base sa usa ka pagtuki sa mga kausaban sa oras sa pag-access sa cache ug uncached data.

Ang una nga pagkahuyang (CVE-2021-35477) gipahinabo sa usa ka sayup sa mekanismo sa pag-verify sa programa sa BPF. Aron mapanalipdan batok sa usa ka pag-atake sa Spectre 4, ang verifier nagdugang usa ka dugang nga panudlo pagkahuman mahimo’g adunay problema nga mga tindahan sa memorya nga nagtipig usa ka null nga kantidad aron mabalhin ang mga bakas sa miaging operasyon. Ang pagsulat nga null nga operasyon gipaabot nga paspas kaayo ug i-block ang speculative execution tungod kay nagdepende lang kini sa pointer sa BPF stack frame. Apan sa tinuud, nahimo’g posible ang paghimo og mga kondisyon diin ang usa ka panudlo nga nagdala sa espekulatibo nga pagpatay nagdumala nga ipatuman sa wala pa ang operasyon sa preemptive nga tindahan.

Ang ikaduha nga kahuyang (CVE-2021-3455) tungod sa kamatuoran nga sa diha nga ang BPF verifier nagpaila sa posibleng delikado nga memory save nga mga operasyon, kini wala maghunahuna sa uninitialized nga mga dapit sa BPF stack, ang unang pagsulat nga operasyon nga dili protektado. Kini nga bahin nagdala ngadto sa posibilidad sa paghimo sa usa ka speculative read operation, nagsalig sa usa ka uninitialized memory area, sa dili pa ipatuman ang instruksiyon sa tindahan. Ang bag-ong memorya alang sa BPF stack gigahin nga walay pagsusi sa mga sulod nga anaa na sa gigahin nga memorya, ug adunay usa ka paagi sa dili pa ang BPF nga programa modagan aron sa pagmaniobra sa mga sulod sa memorya nga rehiyon nga igahin alang sa BPF stack.

Source: opennet.ru

Idugang sa usa ka comment