Sårbarhet i Linux Netfilter-kjerneundersystemet

En sårbarhet (CVE-2021-22555) er identifisert i Netfilter, et undersystem av Linux-kjernen som brukes til å filtrere og modifisere nettverkspakker, som lar en lokal bruker få root-privilegier på systemet, inkludert mens han er i en isolert beholder. En fungerende prototype av en utnyttelse som omgår KASLR-, SMAP- og SMEP-beskyttelsesmekanismene er forberedt for testing. Forskeren som oppdaget sårbarheten mottok en belønning på $20 XNUMX fra Google for å identifisere en metode for å omgå isolasjonen av Kubernetes-beholdere i en kCTF-klynge.

Problemet har eksistert siden kjernen 2.6.19, utgitt for 15 år siden, og er forårsaket av en feil i IPT_SO_SET_REPLACE- og IP6T_SO_SET_REPLACE-behandlerne som forårsaker bufferoverflyt ved sending av spesialformaterte parametere via et setsockopt-kall i kompatibilitetsmodus. Under normale omstendigheter kan bare root-brukeren ringe compat_setsockopt(), men privilegiene som kreves for å utføre angrepet kan også oppnås av en uprivilegert bruker på systemer med støtte for brukernavneområder aktivert.

En bruker kan opprette en container med en egen rotbruker og utnytte sårbarheten derfra. For eksempel er "brukernavneområder" aktivert som standard på Ubuntu og Fedora, men ikke aktivert på Debian og RHEL. Patchen som fikser sårbarheten ble tatt i bruk i Linux-kjernen 13. april. Pakkeoppdateringer er allerede generert av Debian-, Arch Linux- og Fedora-prosjektene. I Ubuntu, RHEL og SUSE er oppdateringer under forberedelse.

Problemet oppstår i funksjonen xt_compat_target_from_user() på grunn av feil beregning av minnestørrelsen ved lagring av kjernestrukturer etter konvertering fra 32-biters til 64-biters representasjon. Feilen lar fire nullbyte skrives til en hvilken som helst posisjon utover den tildelte bufferen avgrenset av offset 0x4C. Denne funksjonen viste seg å være nok til å lage en utnyttelse som tillot en å få root-rettigheter - ved å fjerne m_list->neste-pekeren i msg_msg-strukturen, ble det skapt betingelser for tilgang til data etter frigjøring av minne (use-after-free), som ble deretter brukt til å skaffe informasjon om adresser og endringer i andre strukturer gjennom manipulering av msgsnd() systemkallet.

Kilde: opennet.ru

Legg til en kommentar