Në Netfilter, sistemin e bërthamës Linux të përdorur për filtrimin dhe modifikimin e paketave rrjet, është zbuluar një dobësi (CVE-2021-22555) që lejon një përdorues lokal të fitojë privilegje root në sistem, madje edhe duke qenë në një konteiner të izoluar. Për testim është përgatitur një prototip funksional i një eksploiti që kalon mekanizmat e mbrojtjes KASLR, SMAP dhe SMEP. Kërkuesi që zbuloi dobësinë mori një shpërblim prej 20 mijë dollarësh nga Google për zbulesën e mënyrës së kalimit të izolimit të konteinerëve Kubernetes në klasterin kCTF.
Problemi është evidentuar që nga bërthama 2.6.19, e lëshuar 15 vjet më parë, dhe shkaktohet nga një gabim në trajtuesit IPT_SO_SET_REPLACE dhe IP6T_SO_SET_REPLACE, i cili çon në mbiprodhim të memories kur dërgohen parametra të veçanta përmes thirrjes setsockopt në modalitetin compat. Në kushte normale, thirrja compat_setsockopt() mund të ekzekutohet vetëm nga përdoruesi root, por autorizimet e nevojshme për të kryer sulmin gjithashtu mund të merren nga një përdorues i papërgjegjshëm në sistemet me mbështetje për emrat e hapësirave të identifikuesve të përdoruesve (user namespaces).
Përdoruesi mund të krijojë një konteiner me një përdorues të veçantë root dhe ta shfrytëzojë vulnerabilitetin nga aty. Për shembull, "user namespaces" është aktivizuar në Ubuntu dhe Fedora për të, por nuk është aktivizuar në Debian dhe RHEL. Patch-i që zgjidh vulnerabilitetin është pranuar në bërthamën Linux më 13 prill. Përditësimet e paketave janë formuar tashmë nga projektet Debian, Arch Linux dhe Fedora. Në Ubuntu, RHEL dhe SUSE, përditësimet janë në fazën e përgatitjes.
Problemi ndodh nĂ« funksionin xt_compat_target_from_user() pĂ«r shkak tĂ« llogaritjes sĂ« gabuar tĂ« madhĂ«sisĂ« sĂ« memories gjatĂ« ruajtjes sĂ« strukturave tĂ« bĂ«rthamĂ«s pas konvertimit nga 32 nĂ« 64 bit. Gabimi lejon tĂ« shkruhen katĂ«r byte zero nĂ« çdo pozicion jashtĂ« buffer-it tĂ« alokuar, tĂ« kufizuar nga zhvendosja 0x4C. Kjo mundĂ«si u tregua e mjaftueshme pĂ«r tĂ« krijuar njĂ« eksploatues qĂ« mund tĂ« fitonte tĂ« drejtat root â duke pastruar treguesin m_list->next nĂ« strukturĂ«n msg_msg, u krijuan kushte pĂ«r tĂ« arritur nĂ« tĂ« dhĂ«nat pas çlirimit tĂ« memories (use-after-free), tĂ« cilat mĂ« pas u shfrytĂ«zuan pĂ«r tĂ« marrĂ« informacione pĂ«r adresat dhe pĂ«r tĂ« ndryshuar struktura tĂ« tjera pĂ«rmes manipulimit me thirrjen e sistemit msgsnd().
Burimi: opennet.ru
