eBPF-i alamsüsteemi haavatavused, mis võimaldavad koodi käivitamist Linuxi tuuma tasemel

eBPF-i alamsüsteemis on tuvastatud kaks uut turvaauku, mis võimaldab käitada Linuxi tuuma sees töötlejaid spetsiaalses JIT-iga virtuaalmasinas. Mõlemad haavatavused võimaldavad käivitada teie koodi kerneli õigustega väljaspool isoleeritud eBPF-i virtuaalmasinat. Info probleemide kohta avaldas Pwn2Own võistlust läbi viiv Zero Day Initiative meeskond, mille käigus demonstreeriti sel aastal kolme Ubuntu Linuxi rünnakut, mis kasutasid senitundmatuid turvaauke (kas eBPF-i haavatavused on nende rünnetega seotud, seda ei teata) .

  • CVE-2021-3490 – haavatavus on põhjustatud 32-bitise piiridest väljapoole kontrollimise puudumisest eBPF ALU32 bitipõhise JA-, VÕI- ja XOR-toimingute tegemisel. Ründaja saab seda viga ära kasutada andmete lugemiseks ja kirjutamiseks väljaspool eraldatud puhvri piire. Probleem XOR-i operatsioonidega ilmneb alates kerneli versioonist 5.7-rc1 ning AND ja OR - alates versioonist 5.10-rc1.
  • CVE-2021-3489 – haavatavus on põhjustatud tõrkest helinapuhvri juurutamisel ja selle põhjuseks on asjaolu, et funktsioon bpf_ringbuf_reserve ei kontrollinud võimalust, et eraldatud mälupiirkonna suurus võib olla tegelikust väiksem. ringbufist. Probleem ilmneb alates versioonist 5.8-rc1.

Distributsioonide haavatavuste parandamise olekut saab jälgida järgmistel lehtedel: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch. Parandused on saadaval ka paikadena (CVE-2021-3489, CVE-2021-3490). Kas probleemi saab ära kasutada, sõltub sellest, kas eBPF-i süsteemikutse on kasutajale juurdepääsetav. Näiteks RHEL-i vaikekonfiguratsioonis nõuab haavatavuse ärakasutamine kasutajal CAP_SYS_ADMIN õigusi.

Eraldi saame märkida veel ühe Linuxi tuuma haavatavuse - CVE-2021-32606, mis võimaldab kohalikul kasutajal tõsta oma õigusi juurtasemele. Probleem on ilmne alates Linuxi kernelist 5.11 ja selle põhjuseks on CAN ISOTP protokolli juurutamise võistlustingimus, mis võimaldab muuta pesa sidumise parameetreid, kuna funktsioonis isotp_setsockopt() pole õigeid lukke seadistatud. lipu CAN_ISOTP_SF_BROADCAST töötlemisel.

Pärast ISOTP-pesa sulgemist jääb kehtima sidumine adressaadi sokliga, mis võib jätkata pesaga seotud struktuuride kasutamist pärast nendega seotud mälu vabastamist (kasutus-pärast-vaba isotp_sock struktuuri kutse tõttu mis on isotp_rcv() kutsumisel juba vabastatud). Andmetöötluse abil saate alistada funktsiooni sk_error_report() kursori ja käivitada oma koodi kerneli tasemel.

Allikas: opennet.ru

Lisa kommentaar