Isang kahinaan sa VFS ng Linux kernel na nagbibigay-daan sa iyong palakihin ang iyong mga pribilehiyo

Natukoy ang isang kahinaan (CVE-2022-0185) sa Filesystem Context API na ibinigay ng Linux kernel, na nagpapahintulot sa isang lokal na user na makakuha ng mga pribilehiyo sa ugat sa system. Ang mananaliksik na tumukoy sa problema ay nag-publish ng isang demonstrasyon ng pagsasamantala na nagbibigay-daan sa iyong magsagawa ng code bilang root sa Ubuntu 20.04 sa default na configuration. Ang exploit code ay binalak na mai-post sa GitHub sa loob ng isang linggo pagkatapos maglabas ng update ang mga distribusyon na nag-aayos sa kahinaan.

Ang kahinaan ay umiiral sa legacy_parse_param() function sa VFS at sanhi ng pagkabigo na maayos na suriin ang maximum na laki ng mga parameter na ibinigay sa mga file system na hindi sumusuporta sa Filesystem Context API. Ang pagpasa ng isang parameter na masyadong malaki ay maaaring magdulot ng pag-apaw ng integer variable na ginamit upang kalkulahin ang laki ng data na isusulat - ang code ay may buffer overflow check "kung (len > PAGE_SIZE - 2 - size)", na hindi gumana kung ang halaga ng laki ay higit sa 4094. para sa integer overflow sa lower bound (integer underflow, kapag nag-cast ng 4096 - 2 - 4095 sa unsigned int, ang resulta ay 2147483648).

Ang error na ito ay nagbibigay-daan, kapag nag-a-access ng isang espesyal na idinisenyong imahe ng file system, na magdulot ng buffer overflow at ma-overwrite ang data ng kernel kasunod ng inilaan na lugar ng memorya. Upang samantalahin ang kahinaan, dapat ay mayroon kang mga karapatan sa CAP_SYS_ADMIN, ibig sabihin. kapangyarihan ng administrator. Ang problema ay ang isang walang pribilehiyong user ay maaaring makakuha ng mga naturang pahintulot sa isang nakahiwalay na lalagyan kung ang system ay may suporta para sa mga namespace ng user na pinagana. Halimbawa, ang mga namespace ng user ay pinagana bilang default sa Ubuntu at Fedora, ngunit hindi naka-enable sa Debian at RHEL (maliban kung ginagamit ang mga container isolation platform).

Ang problema ay lumilitaw mula noong Linux kernel 5.1 at naayos sa mga update kahapon 5.16.2, 5.15.16, 5.10.93, 5.4.173. Ang mga update sa package na nag-aayos ng kahinaan ay inilabas na para sa RHEL, Debian, Fedora, at Ubuntu. Ang pag-aayos ay hindi pa magagamit sa Arch Linux, Gentoo, SUSE at openSUSE. Bilang solusyon sa seguridad para sa mga system na hindi gumagamit ng container isolation, maaari mong itakda ang sysctl "user.max_user_namespaces" value sa 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Pinagmulan: opennet.ru

Magdagdag ng komento