Linux Netfilter -ytimen alijärjestelmän haavoittuvuus

Netfilterissä, Linux-ytimen alijärjestelmässä, jota käytetään verkkopakettien suodattamiseen ja muokkaamiseen, on havaittu haavoittuvuus (CVE-2021-22555), jonka avulla paikallinen käyttäjä voi hankkia pääkäyttäjän oikeudet järjestelmään, myös ollessaan eristetyssä säilössä. Testausta varten on valmisteltu toimiva prototyyppi KASLR-, SMAP- ja SMEP-suojausmekanismit ohittavasta hyväksikäytöstä. Haavoittuvuuden löytänyt tutkija sai Googlelta 20 XNUMX dollarin palkkion, kun hän löysi menetelmän, jolla kCTF-klusterin Kubernetes-säiliöiden eristäminen voidaan ohittaa.

Ongelma on ollut ytimen versiosta 2.6.19 lähtien, joka julkaistiin 15 vuotta sitten, ja sen aiheuttaa IPT_SO_SET_REPLACE- ja IP6T_SO_SET_REPLACE-käsittelijöiden virhe, joka aiheuttaa puskurin ylivuodon lähetettäessä erityisesti muotoiltuja parametreja setsockopt-kutsun kautta compat-tilassa. Normaaleissa olosuhteissa vain pääkäyttäjä voi kutsua compat_setsockopt(), mutta hyökkäyksen suorittamiseen tarvittavat oikeudet voivat saada myös etuoikeutetut käyttäjät järjestelmissä, joissa käyttäjän nimiavaruudet ovat käytössä.

Käyttäjä voi luoda säilön erillisellä pääkäyttäjällä ja hyödyntää haavoittuvuutta sieltä. Esimerkiksi "käyttäjänimitilat" on oletuksena käytössä Ubuntussa ja Fedorassa, mutta ei käytössä Debianissa ja RHEL:ssä. Haavoittuvuuden korjaava korjaustiedosto otettiin käyttöön Linux-ytimessä 13. huhtikuuta. Debian-, Arch Linux- ja Fedora-projektit ovat jo luoneet pakettipäivitykset. Ubuntussa, RHEL:ssä ja SUSEssa päivitykset ovat valmisteilla.

Ongelma ilmenee xt_compat_target_from_user()-funktiossa, koska muistin koko on laskettu väärin tallennettaessa ydinrakenteita 32-bittisestä 64-bittisestä esityksestä muuntamisen jälkeen. Virhe sallii neljän nollatavun kirjoittamisen mihin tahansa kohtaan varatun puskurin ulkopuolella, jota rajoittaa offset 0x4C. Tämä ominaisuus osoittautui riittäväksi hyväksikäytön luomiseen, joka mahdollisti pääkäyttäjän oikeuksien hankkimisen - tyhjentämällä m_list->next-osoittimen msg_msg-rakenteessa, luotiin edellytykset tietojen käyttämiselle muistin vapauttamisen jälkeen (use-after-free), mikä Käytettiin sitten hankkimaan tietoa osoitteista ja muutoksista muihin rakenteisiin msgsnd()-järjestelmäkutsua käsittelemällä.

Lähde: opennet.ru

Lisää kommentti