I Netfilter, Linux-kÀrnans subsystem som anvÀnds för filtrering och modifiering av nÀtverkspaket, har en sÄrbarhet identifierats (CVE-2021-22555) som gör att en lokal anvÀndare kan erhÄlla root-behörigheter i systemet, Àven nÀr denne befinner sig i en isolerad container. En fungerande prototyp av en exploit har utvecklats för att kringgÄ skyddsmekanismerna KASLR, SMAP och SMEP. Forskaren som upptÀckte sÄrbarheten erhöll en belöning frÄn Google pÄ 20 000 dollar för att ha identifierat en metod för att kringgÄ Kubernetes-containerisolering i kCTF-kluster.
Problemet upptrÀder frÄn och med kÀrnan 2.6.19, som slÀpptes för 15 Är sedan, och orsakas av ett fel i handskarna IPT_SO_SET_REPLACE och IP6T_SO_SET_REPLACE, vilket leder till en buffertöverskridning nÀr sÀrskilt utformade parametrar skickas genom anropet setsockopt i kompatibilitetslÀge. Under normala förhÄllanden kan anropet compat_setsockopt() endast utföras av anvÀndaren root, men de behörigheter som krÀvs för att genomföra attacken kan ocksÄ erhÄllas av en icke-privilegierad anvÀndare i system med aktiverad stöd för anvÀndar-namnrymder (user namespaces).
AnvÀndaren kan skapa en container med en separat root-anvÀndare och utnyttja sÄrbarheten dÀrifrÄn. Till exempel Àr "user namespaces" som standard aktiverat i Ubuntu och Fedora, men inte aktiverat i Debian och RHEL. En patch för att ÄtgÀrda sÄrbarheten antogs i Linux-kÀrnan den 13 april. Paketuppdateringar har redan tagits fram av projekten Debian, Arch Linux och Fedora. I Ubuntu, RHEL och SUSE Àr uppdateringar under beredning.
Problemet uppstĂ„r i funktionen xt_compat_target_from_user() pĂ„ grund av felaktig berĂ€kning av minnesstorlek vid lagring av kĂ€rnstrukturer efter konvertering frĂ„n 32-bitars till 64-bitars representation. Felet gör det möjligt att skriva fyra nullbyte till valfri position utanför den tilldelade bufferten, begrĂ€nsad av förskjutningen 0x4C. Denna möjlighet visade sig vara tillrĂ€cklig för att skapa en exploit som möjliggör erhĂ„llande av root-behörigheter â genom att rensa pekaren m_list->next i strukturen msg_msg skapades förutsĂ€ttningar för att fĂ„ Ă„tkomst till data efter minnesfrigöring (use-after-free), vilket dĂ€refter anvĂ€ndes för att erhĂ„lla information om adresser och Ă€ndra andra strukturer genom manipulering med systemanropet msgsnd().
KĂ€lla: opennet.ru
