Ang kahinaan sa iSCSI subsystem ng Linux kernel na nagbibigay-daan sa pagtaas ng pribilehiyo

Ang isang kahinaan (CVE-2021-27365) ay natukoy sa iSCSI subsystem code ng Linux kernel na maaaring magpapahintulot sa isang walang pribilehiyong lokal na user na magsagawa ng code sa antas ng kernel at makakuha ng mga pribilehiyo sa ugat sa system. Ang isang gumaganang prototype ng pagsasamantala ay magagamit para sa pagsubok. Ang kahinaan ay naayos sa Linux kernel updates 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 at 4.4.260. Available ang mga update sa kernel package sa mga distribusyon ng Debian, Ubuntu, SUSE/openSUSE, Arch Linux, at Fedora. Ang mga pag-aayos ng RHEL ay hindi pa nailalabas.

Ang problema ay sanhi ng isang error sa iscsi_host_get_param() function mula sa libiscsi module, na ipinakilala noong 2006 sa panahon ng pagbuo ng iSCSI subsystem. Dahil sa kakulangan ng tamang mga pagsusuri sa laki, ang ilang katangian ng string ng iSCSI, gaya ng hostname o username, ay maaaring lumampas sa halaga ng PAGE_SIZE (4 KB). Ang kahinaan ay maaaring samantalahin ng isang walang pribilehiyong user na nagpapadala ng mga mensahe sa Netlink na nagtatakda ng mga katangian ng iSCSI sa mga halagang higit sa PAGE_SIZE. Kapag binasa ang mga katangiang ito sa pamamagitan ng sysfs o seqfs, tinatawag ang code na nagpapasa ng mga katangian sa sprintf function na makokopya sa isang buffer na ang laki ay PAGE_SIZE.

Ang pagsasamantala sa kahinaan sa mga distribusyon ay nakasalalay sa suporta para sa awtomatikong paglo-load ng scsi_transport_iscsi kernel module kapag sinusubukang gumawa ng NETLINK_ISCSI socket. Sa mga distribusyon kung saan awtomatikong na-load ang module na ito, maaaring gumawa ng pag-atake anuman ang paggamit ng functionality ng iSCSI. Kasabay nito, para sa matagumpay na aplikasyon ng pagsasamantala, ang pagpaparehistro ng hindi bababa sa isang iSCSI transport ay kinakailangan din. Sa turn, maaari mong gamitin ang ib_iser kernel module, na awtomatikong na-load kapag sinubukan ng isang walang pribilehiyong user na lumikha ng NETLINK_RDMA socket, upang irehistro ang transportasyon.

Ang awtomatikong paglo-load ng mga module na kinakailangan upang mailapat ang pagsasamantala ay sinusuportahan sa CentOS 8, RHEL 8 at Fedora kapag ang rdma-core na pakete ay naka-install sa system, na isang dependency para sa ilang mga sikat na pakete at naka-install bilang default sa mga pagsasaayos para sa mga workstation, mga sistema ng server na may GUI at virtualization ng mga host environment. Kasabay nito, ang rdma-core ay hindi naka-install kapag gumagamit ng isang server build na gumagana lamang sa console mode at kapag nag-i-install ng isang minimal na imahe sa pag-install. Halimbawa, ang package ay kasama sa base distribution ng Fedora 31 Workstation, ngunit hindi kasama sa Fedora 31 Server. Hindi gaanong apektado ang Debian at Ubuntu, dahil nilo-load lang ng rdma-core package ang mga kernel module na kinakailangan para sa isang pag-atake kung naroroon ang RDMA hardware.

Ang kahinaan sa iSCSI subsystem ng Linux kernel na nagbibigay-daan sa pagtaas ng pribilehiyo

Bilang solusyon sa seguridad, maaari mong i-disable ang awtomatikong pag-load ng module ng libiscsi: echo "i-install ang libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf

Bukod pa rito, dalawa pang hindi gaanong mapanganib na mga kahinaan ang naayos sa subsystem ng iSCSI na maaaring humantong sa pagtagas ng data mula sa kernel: CVE-2021-27363 (paglabas ng impormasyon tungkol sa iSCSI transport descriptor sa pamamagitan ng sysfs) at CVE-2021-27364 (pagbabasa mula sa isang out-of-bounds buffer area) . Ang mga kahinaang ito ay maaaring gamitin upang makipag-usap sa pamamagitan ng isang netlink socket na may iSCSI subsystem nang walang kinakailangang mga pribilehiyo. Halimbawa, ang isang walang pribilehiyong user ay maaaring kumonekta sa iSCSI at magpadala ng command na "tapusin ang isang session" upang wakasan ang session.

Pinagmulan: opennet.ru

Magdagdag ng komento