Natukoy ang mga mapagsamantalang kahinaan sa nf_tables, watch_queue at IPsec sa kernel ng Linux

Maraming mga mapanganib na kahinaan ang natukoy sa kernel ng Linux na nagpapahintulot sa isang lokal na gumagamit na dagdagan ang kanilang mga pribilehiyo sa system. Ang mga gumaganang prototype ng pagsasamantala ay inihanda para sa lahat ng mga problemang isinasaalang-alang.

  • Ang isang kahinaan (CVE-2022-0995) sa watch_queue event tracking subsystem ay nagbibigay-daan sa data na maisulat sa isang out-of-bounds buffer sa kernel memory. Ang pag-atake ay maaaring isagawa ng sinumang walang pribilehiyong gumagamit at magreresulta sa kanilang code na tumatakbo na may mga karapatan sa kernel. Ang kahinaan ay umiiral sa function na watch_queue_set_size() at nauugnay sa isang pagtatangkang i-clear ang lahat ng mga pointer sa isang listahan, kahit na ang memorya ay hindi inilaan para sa kanila. Ang problema ay nangyayari kapag binubuo ang kernel gamit ang "CONFIG_WATCH_QUEUE=y" na opsyon, na ginagamit sa karamihan ng mga distribusyon ng Linux.

    Ang kahinaan ay natugunan sa isang pagbabago sa kernel na idinagdag noong ika-11 ng Marso. Maaari mong sundin ang mga publikasyon ng mga update sa package sa mga pamamahagi sa mga pahinang ito: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ang exploit prototype ay available na sa publiko at nagbibigay-daan sa iyong makakuha ng root access kapag tumatakbo sa Ubuntu 21.10 na may kernel 5.13.0-37.

    Natukoy ang mga mapagsamantalang kahinaan sa nf_tables, watch_queue at IPsec sa kernel ng Linux

  • Vulnerability (CVE-2022-27666) sa esp4 at esp6 kernel modules na may pagpapatupad ng ESP transformations (Encapsulating Security Payload) para sa IPsec, na ginagamit kapag gumagamit ng IPv4 at IPv6. Ang kahinaan ay nagbibigay-daan sa isang lokal na gumagamit na may normal na mga pribilehiyo na i-overwrite ang mga bagay sa memorya ng kernel at palakihin ang kanilang mga pribilehiyo sa system. Ang problema ay sanhi ng kakulangan ng pagkakasundo sa pagitan ng inilaan na laki ng memorya at ng aktwal na data na natanggap, dahil ang maximum na laki ng mensahe ay maaaring lumampas sa maximum na laki ng memorya na inilaan para sa skb_page_frag_refill na istraktura.

    Ang kahinaan ay naayos sa kernel noong Marso 7 (naayos sa 5.17, 5.16.15, atbp.). Maaari mong sundin ang mga publikasyon ng mga update sa package sa mga pamamahagi sa mga pahinang ito: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ang isang gumaganang prototype ng pagsasamantala, na nagpapahintulot sa isang ordinaryong user na makakuha ng root access sa Ubuntu Desktop 21.10 sa default na configuration, ay nai-post na sa GitHub. Ito ay inaangkin na may maliit na pagbabago ang pagsasamantala ay gagana rin sa Fedora at Debian. Kapansin-pansin na ang pagsasamantala ay orihinal na inihanda para sa pwn2own 2022 na kumpetisyon, ngunit ang mga developer ng kernel ay natukoy at naitama ang isang bug na nauugnay dito, kaya napagpasyahan na ibunyag ang mga detalye ng kahinaan.

  • Dalawang kahinaan (CVE-2022-1015, CVE-2022-1016) sa netfilter subsystem sa nf_tables module, na nagsisiguro sa pagpapatakbo ng nftables packet filter. Ang unang isyu ay nagbibigay-daan sa isang lokal na walang pribilehiyong user na makamit ang isang out-of-bounds na pagsulat sa isang inilalaang buffer sa stack. Nangyayari ang overflow kapag nagpoproseso ng mga expression ng nftables na na-format sa isang partikular na paraan at pinoproseso sa yugto ng pagsusuri ng mga index na tinukoy ng isang user na may access sa mga panuntunan ng nftables.

    Ang kahinaan ay sanhi ng katotohanan na ipinahiwatig ng mga developer na ang halaga ng "enum nft_registers reg" ay isang byte, kapag kapag pinagana ang ilang partikular na pag-optimize, ang compiler, ayon sa detalye ng C89, ay maaaring gumamit ng 32-bit na halaga para dito. . Dahil sa tampok na ito, ang laki na ginamit kapag nagsusuri at naglalaan ng memorya ay hindi tumutugma sa aktwal na laki ng data sa istraktura, na humahantong sa buntot ng istraktura na nasasapawan ng mga pointer sa stack.

    Maaaring samantalahin ang problema upang magsagawa ng code sa antas ng kernel, ngunit ang isang matagumpay na pag-atake ay nangangailangan ng access sa mga nftable, na maaaring makuha sa isang hiwalay na namespace ng network na may mga karapatan sa CLONE_NEWUSER o CLONE_NEWNET (halimbawa, kung maaari kang magpatakbo ng isang nakahiwalay na lalagyan). Ang kahinaan ay malapit ding nauugnay sa mga pag-optimize na ginagamit ng compiler, na, halimbawa, ay pinagana kapag bumubuo sa "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" mode. Ang pagsasamantala sa kahinaan ay posible simula sa Linux kernel 5.12.

    Ang pangalawang kahinaan sa netfilter ay sanhi ng pag-access sa isang nalibre nang lugar ng memorya (use-after-free) sa handler ng nft_do_chain at maaaring humantong sa isang pagtagas ng mga hindi nasimulang lugar ng memorya ng kernel, na maaaring basahin sa pamamagitan ng mga manipulasyon sa mga expression ng nftables at ginamit, halimbawa, upang matukoy ang mga pointer address sa panahon ng mga pagsasamantala sa pag-unlad para sa iba pang mga kahinaan. Ang pagsasamantala sa kahinaan ay posible simula sa Linux kernel 5.13.

    Ang mga kahinaan ay tinutugunan sa mga kernel patch ngayon 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274, at 4.9.309. Maaari mong sundin ang mga publikasyon ng mga update sa package sa mga pamamahagi sa mga pahinang ito: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ang tagapagpananaliksik na tumukoy sa mga problema ay nag-anunsyo ng paghahanda ng mga nagtatrabaho na pagsasamantala para sa parehong mga kahinaan, na binalak na mai-publish sa loob ng ilang araw, pagkatapos ng mga distribusyon na maglabas ng mga update sa mga pakete ng kernel.

Pinagmulan: opennet.ru

Magdagdag ng komento