Athari katika mfumo mdogo wa Linux Netfilter kernel

Athari ya kuathiriwa (CVE-2021-22555) imetambuliwa katika Netfilter, mfumo mdogo wa Linux kernel unaotumiwa kuchuja na kurekebisha pakiti za mtandao, ambayo huruhusu mtumiaji wa ndani kupata upendeleo wa mizizi kwenye mfumo, ikijumuisha akiwa katika chombo kilichojitenga. Mfano unaofanya kazi wa unyonyaji unaopita njia za ulinzi za KASLR, SMAP na SMEP umetayarishwa kwa majaribio. Mtafiti aliyegundua athari hiyo alipokea zawadi ya $20 kutoka kwa Google kwa kutambua mbinu ya kukwepa kutengwa kwa kontena za Kubernetes katika nguzo ya kCTF.

Tatizo limekuwepo tangu kernel 2.6.19, iliyotolewa miaka 15 iliyopita, na husababishwa na hitilafu katika vishikilizi vya IPT_SO_SET_REPLACE na IP6T_SO_SET_REPLACE vinavyosababisha kufurika kwa bafa wakati wa kutuma vigezo vilivyoundwa mahususi kupitia simu ya setsockopt katika hali ya compat. Katika hali ya kawaida, simu kwa compat_setsockopt() inaweza tu kufanywa na mtumiaji mzizi, lakini haki zinazohitajika kutekeleza shambulio hilo zinaweza pia kupatikana na mtumiaji asiye na haki kwenye mifumo iliyo na usaidizi wa nafasi za majina za watumiaji zilizowezeshwa.

Mtumiaji anaweza kuunda kontena na mtumiaji wa mizizi tofauti na kutumia athari kutoka hapo. Kwa mfano, "nafasi za majina ya watumiaji" huwezeshwa kwa chaguo-msingi kwenye Ubuntu na Fedora, lakini haijawashwa kwenye Debian na RHEL. Kiraka cha kurekebisha athari kilipitishwa kwenye kinu cha Linux mnamo Aprili 13. Masasisho ya vifurushi tayari yametolewa na miradi ya Debian, Arch Linux na Fedora. Katika Ubuntu, RHEL na SUSE, masasisho yanatayarishwa.

Tatizo hutokea katika kazi ya xt_compat_target_from_user() kutokana na hesabu isiyo sahihi ya ukubwa wa kumbukumbu wakati wa kuhifadhi miundo ya kernel baada ya uongofu kutoka kwa uwakilishi wa 32-bit hadi 64-bit. Hitilafu huruhusu baiti nne batili kuandikwa kwa nafasi yoyote zaidi ya bafa iliyotengwa inayopakana na kukabiliana na 0x4C. Kipengele hiki kiligeuka kuwa cha kutosha kuunda unyonyaji ambao uliruhusu mtu kupata haki za mizizi - kwa kufuta m_list-> pointer inayofuata katika muundo wa msg_msg, hali ziliundwa kwa ajili ya kupata data baada ya kufungia kumbukumbu (use-after-free), ambayo kisha ilitumiwa kupata taarifa kuhusu anwani na mabadiliko ya miundo mingine kupitia upotoshaji wa simu ya mfumo ya msgsnd().

Chanzo: opennet.ru

Kuongeza maoni