Natagpuan nila ang isang kahinaan ng VFS sa Linux na nagpapahintulot sa pagtaas ng pribilehiyo

Ilang araw na ang nakakalipas inilabas ang balita na natukoy ang kahinaan (naka-catalog na sa ilalim ng CVE-2022-0185) atn ang file system context API ibinigay ng linux kernel na maaaring magpapahintulot sa isang lokal na gumagamit na makakuha ng mga pribilehiyo sa ugat sa system.

Nabanggit na ang problema ay ang isang user na walang mga pribilehiyo ay makakakuha ng mga naturang pahintulot sa isang nakahiwalay na lalagyan kung ang suporta para sa mga namespace ng user ay pinagana sa system.

Halimbawa, ang mga namespace ng user ay pinagana bilang default sa Ubuntu at Fedora, ngunit hindi pinagana sa Debian at RHEL (maliban kung ginagamit ang mga container isolation platform). Bilang karagdagan sa pagtaas ng pribilehiyo, magagamit din ang kahinaan upang lumabas sa isang nakahiwalay na container kung ang container ay may awtoridad na CAP_SYS_ADMIN.

Kakayahang mangyari ay umiiral sa function na legacy_parse_param() sa VFS at ito ay dahil sa kakulangan ng wastong pagpapatunay ng maximum na laki ng mga ibinigay na parameter sa mga file system na hindi sumusuporta sa file system context API.

Kamakailan, ilang mga kaibigan sa aking CTF Crusaders of Rust team at nakatagpo ako ng 0-araw na Linux kernel heap overflow. Natagpuan namin ang bug sa pamamagitan ng pag-fuzzing gamit ang syzkaller at mabilis itong ginawa sa isang Ubuntu LPE na pagsasamantala. Pagkatapos ay isinulat namin itong muli upang makatakas at ma-root ang matigas na imprastraktura ng Kubernetes CTF ng Google. Nakakaapekto ang bug na ito sa lahat ng bersyon ng kernel mula noong 5.1 (kasalukuyang isinasagawa ang 5.16) at itinalaga ang CVE-2022-0185. Naiulat na namin ito sa pamamahagi ng Linux at mailing list ng seguridad, at naayos na ang bug sa paglabas ng artikulong ito.

Ang pagpasa ng masyadong malaking parameter ay maaaring magdulot ng overflow ng integer variable na ginamit upang kalkulahin ang laki ng data na isinusulat; ang code ay may "if (len > PAGE_SIZE - 2 - size)" buffer overflow check, na hindi gagana kung ang laki ng value ay mas malaki sa 4094 dahil sa integer overflow sa lower bound (integer overflow, kapag nag-convert ng 4096 – 2 – 4095 sa unsigned int, makakakuha ng 2147483648).

Ang bug na ito ay nagbibigay-daan, kapag nag-a-access ng isang espesyal na ginawang FS na imahe, magdulot ng buffer overflow at i-overwrite ang kernel data kasunod ng inilalaang lugar ng memorya. Upang samantalahin ang kahinaan, kinakailangan ang mga karapatan ng CAP_SYS_ADMIN, ibig sabihin, awtoridad ng administrator.

Noong 2022, napagpasyahan ng aming mga kasamahan sa koponan na maghanap ng isang araw na 0 sa 2022. Hindi kami lubos na sigurado kung paano magsisimula, ngunit dahil ang aming koponan ay may mataas na antas ng pagiging pamilyar sa mga kahinaan ng Linux kernel, nagpasya kaming bumili na lang ng ilang dedikadong server. at patakbuhin ang syzkaller fuzzer ng Google. Noong Enero 6 nang 22:30 PM PST, natanggap ni chop0 ang sumusunod na ulat ng isang pagkabigo ng KASAN sa legacy_parse_param: slab-out-of-bounds Isulat sa legacy_parse_param. Tila nahanap ng syzbot ang problemang ito 6 na araw lang ang nakalipas nang i-fuzz ang Android, ngunit hindi nahawakan ang problema at naisip namin na walang ibang nakapansin.

Sa wakas, ito ay nagkakahalaga ng pagbanggit na ang problema ay nagpapakita ng sarili mula noong Linux kernel bersyon 5.1 at nalutas sa mga update na inilabas ilang araw na nakalipas sa mga bersyon 5.16.2, 5.15.16, 5.10.93, 5.4.173.

Bukod doon Ang mga update sa package ng kahinaan ay inilabas na para RHELDebianfedora at Ubuntu. Habang ang solusyon ay hindi pa magagamit sa Arch LinuxGentooSUSE y openSUSE.

Sa kaso ng mga ito, binanggit na bilang solusyon sa seguridad para sa mga system na hindi gumagamit ng container isolation, maaari mong itakda ang halaga ng sysctl "user.max_user_namespaces" sa 0:

Ang mananaliksik na natukoy ang problema ay naglathala isang demo ng pagsasamantala qPinapayagan ng ue ang pagpapatakbo ng code bilang root sa Ubuntu 20.04 sa default na pagsasaayos. Nakaplano na yun ang exploit code ay nai-publish sa GitHub sa loob ng isang linggo pagkatapos na ang mga distribusyon ay naglalabas ng update na nag-aayos sa kahinaan.

Sa wakas kung interesado kang malaman ang tungkol dito, maaari mong suriin ang mga detalye sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Galician dijo

    Isa pang dahilan para hindi hawakan ang snap gamit ang isang stick.