V Netfilter, jadre Linux, ktoré sa používa na filtrovanie a modifikáciu sieťových paketov, bola zistená zraniteľnosť (CVE-2021-22555), ktorá umožňuje lokálnemu používateľovi získať privilégiá root v systéme, dokonca aj v izolovanom konte. Na testovanie bol pripravený pracovný prototyp exploit-u, ktorý obchádza zabezpečovacie mechanizmy KASLR, SMAP a SMEP. Výskumník, ktorý zistil zraniteľnosť, dostal od Google odmenu vo výške 20 tisíc dolárov za objavenie metódy obchádzania izolácie kontajnerov Kubernetes v klastre kCTF.
Problém sa prejavuje od jadra 2.6.19, vydaného pred 15 rokmi, a je spôsobený chybou v spracovateľoch IPT_SO_SET_REPLACE a IP6T_SO_SET_REPLACE, ktorá vedie k pretečeniu vyrovnávacej pamäte pri odosielaní špeciálne naformátovaných parametrov cez volanie setsockopt v režime compat. Za normálnych okolností môže volať compat_setsockopt() iba používateľ root, ale potrebné oprávnenia na uskutočnenie útoku môžu získať aj neoprávnení používatelia v systémoch so zapnutou podporou menových priestorov identít používateľov (user namespaces).
Používateľ môže vytvoriť kontajner s oddeleným používateľom root a z neho zneužiť zraniteľnosť. Napríklad, 'user namespaces' je predvolene zapnutý v Ubuntu a Fedore, ale nie je aktívny v Debiane a RHEL. Oprava zraniteľnosti bola zaradená do jadra Linux 13. apríla. Aktualizácie balíkov už boli vytvorené projektmi Debian, Arch Linux a Fedora. V Ubuntu, RHEL a SUSE sú aktualizácie vo fáze prípravy.
Problém vzniká vo funkcii xt_compat_target_from_user() v dôsledku nesprávneho výpočtu veľkosti pamäte pri ukladaní štruktúr jadra po prevode z 32- na 64-bitové zobrazenie. Chyba umožňuje zapísať štyri nulové bajty do akejkoľvek pozície mimo vymedzeného vyrovnávacieho priestoru, obmedzenú posunom 0x4C. Uvedenej možnosti sa ukázalo byť dosť na vytvorenie exploit-u, ktorý umožňuje získať práva root — prostredníctvom vyčistenia ukazovateľa m_list->next v štruktúre msg_msg sa vytvorili podmienky na prístup k údajom po uvoľnení pamäte (use-after-free), čo sa potom použilo na získanie informácií o adresách a zmenu iných štruktúr prostredníctvom manipulácie so systémovým volaním msgsnd().
Zdroj: opennet.ru
