Veikleikar í eBPF undirkerfinu sem leyfa keyrslu kóða á Linux kjarnastigi

Tveir nýir veikleikar hafa verið greindir í eBPF undirkerfinu, sem gerir þér kleift að keyra meðhöndlara inni í Linux kjarnanum í sérstakri sýndarvél með JIT. Báðir veikleikarnir gera það mögulegt að keyra kóðann þinn með kjarnaréttindum, utan einangraðrar eBPF sýndarvél. Upplýsingar um vandamálin voru birtar af Zero Day Initiative teyminu, sem rekur Pwn2Own keppnina, þar sem á þessu ári var sýnt fram á þrjár árásir á Ubuntu Linux sem notuðu áður óþekkta veikleika (hvort veikleikarnir í eBPF tengjast þessum árásum er ekki tilkynnt) .

  • CVE-2021-3490 - Varnarleysið stafar af skorti á 32 bita eftirliti utan marka þegar unnið er með bitalegum AND, OR og XOR aðgerðum í eBPF ALU32. Árásarmaður getur nýtt sér þessa villu til að lesa og skrifa gögn utan marka úthlutaðs biðminni. Vandamálið með XOR aðgerðir birtist frá kjarna útgáfu 5.7-rc1, og OG og OR - frá 5.10-rc1.
  • CVE-2021-3489 - Varnarleysið stafar af villu í innleiðingu hringja biðminni og stafar af því að bpf_ringbuf_reserve fallið athugaði ekki möguleikann á því að stærð úthlutaðs minnissvæðis gæti verið minni en raunveruleg stærð af ringbufinu. Vandamálið birtist frá útgáfu 5.8-rc1.

Hægt er að fylgjast með stöðu veikleika við plástur í dreifingum á þessum síðum: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Lagfæringar eru einnig fáanlegar sem plástrar (CVE-2021-3489, CVE-2021-3490). Hvort hægt sé að nýta málið fer eftir því hvort eBPF kerfissímtalið sé aðgengilegt notandanum. Til dæmis, í sjálfgefnum uppsetningu í RHEL, krefst misnotkun á varnarleysinu að notandinn hafi CAP_SYS_ADMIN réttindi.

Sérstaklega getum við tekið eftir öðrum varnarleysi í Linux kjarnanum - CVE-2021-32606, sem gerir staðbundnum notanda kleift að hækka réttindi sín upp á rótarstigið. Vandamálið hefur verið augljóst síðan Linux kjarna 5.11 og stafar af keppnisástandi í innleiðingu CAN ISOTP samskiptareglunnar, sem gerir það mögulegt að breyta falsbindingarbreytum vegna skorts á að stilla rétta læsinga í isotp_setsockopt() aðgerðinni við vinnslu CAN_ISOTP_SF_BROADCAST fánans.

Eftir að ISOTP-innstungunni er lokað, er bindingin við viðtakandainnstunguna áfram í gildi, sem getur haldið áfram að nota mannvirkin sem tengjast innstungunni eftir að minnið sem tengist þeim er losað (nota-eftir-frjáls vegna símtals í isotp_sock uppbyggingu sem hefur þegar verið losað þegar isotp_rcv() er kallað). Með gagnavinnslu geturðu hnekkt bendilinn á sk_error_report() aðgerðina og keyrt kóðann þinn á kjarnastigi.

Heimild: opennet.ru

Bæta við athugasemd