Vainīgums Linux Netfilter kodola apakšsistēmā

Linux kodola apakšsistēmā Netfilter, kas tiek izmantota tīkla pakete izfiltrēšanai un modificēšanai, atklāts vājums (CVE-2021-22555), kas ļauj lokālam lietotājam iegūt root privilēģijas sistēmā, pat atrodoties izolētā konteinerā. Tika izstrādāts darba prototips eksploitam, kas apiet KASLR, SMAP un SMEP aizsardzības mehānismus. Pētnieks, kurš atklāja vājumu, saņēma 20 tūkstošu dolāru atlīdzību no Google par metodes atklāšanu, kas apiet Kubernetes konteineru izolāciju kCTF klasterī.

Problēma parādās kopš 2.6.19 kodola, kas izlaists pirms 15 gadiem, un ir izraisīta kļūdām IPT_SO_SET_REPLACE un IP6T_SO_SET_REPLACE apstrādātājos, kas noved pie bufera pārplūdes, nosūtot speciāli izstrādātus parametrus ar setsockopt izsaukumu compat režīmā. Parastajos apstākļos compat_setsockopt() var izsaukt tikai lietotājs root, taču nepieciešamie uzbrukuma pilnvarojumi var tikt iegūti arī no ierobežota lietotāja sistēmās ar aktivizētu lietotāju identitāšu nosaukumu telpu (user namespaces) atbalstu.

Lietotājs var izveidot konteineru ar atsevišķu root lietotāju un no tā izmantot vājumu. Piemēram, 'user namespaces' pēc noklusējuma ir aktivizēts Ubuntu un Fedora, taču nav aktivizēts Debian un RHEL. Vājuma labojuma plāksteris tika iekļauts Linux kodolā 13. aprīlī. Pakotņu atjauninājumi jau ir izstrādāti Debian, Arch Linux un Fedora projektiem. Ubuntu, RHEL un SUSE atjauninājumi ir sagatavošanas posmā.

Problēma rodas funkcijā xt_compat_target_from_user() nepareizi aprēķinot atmiņas izmēru, saglabājot kodola struktūras, pēc pārejas no 32-bitu uz 64-bitu pārstāvību. Kļūda ļauj ierakstīt četrus nulles baitus jebkurā pozīcijā ārpus iepriekš piešķirtā bufera, kas ir ierobežota ar nobīdi 0x4C. Šī iespēja izrādījās pietiekama, lai izveidotu eksploitāciju, kas ļauj iegūt root tiesības — ar m_list->next rādītāja tīrīšanu msg_msg struktūrā tika radīti apstākļi datu piekļuvei pēc atmiņas atbrīvošanas (use-after-free), kas pēc tam tika izmantoti, lai iegūtu adreses un mainītu citas struktūras, manipulējot ar sistēmas izsaukumu msgsnd().

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster