Sebezhetőség a Linux Netfilter kernel alrendszerében

Sebezhetőséget (CVE-2021-22555) azonosítottak a Netfilterben, a Linux kernel hálózati csomagok szűrésére és módosítására szolgáló alrendszerében, amely lehetővé teszi a helyi felhasználók számára, hogy root jogosultságokat szerezzenek a rendszeren, beleértve az elszigetelt tárolóban való tartózkodást is. A KASLR, SMAP és SMEP védelmi mechanizmusokat megkerülő exploit működő prototípusa tesztelésre készült. A sebezhetőséget felfedező kutató 20 XNUMX dollár jutalmat kapott a Google-tól, mert olyan módszert azonosított, amellyel megkerülhető a Kubernetes-tárolók elkülönítése egy kCTF-fürtben.

A probléma a 2.6.19 éve megjelent 15-es kernel óta fennáll, és az IPT_SO_SET_REPLACE és IP6T_SO_SET_REPLACE kezelők hibája okozza, amely puffertúlcsordulást okoz, amikor speciálisan formázott paramétereket küldenek setsockopt híváson keresztül kompatibilis módban. Normál körülmények között csak a root felhasználó hívhatja meg a compat_setsockopt() parancsot, de a támadás végrehajtásához szükséges jogosultságokat egy jogosultság nélküli felhasználó is megszerezheti olyan rendszereken, amelyeken engedélyezve vannak a felhasználói névterek.

A felhasználó létrehozhat egy tárolót egy külön root felhasználóval, és onnan használhatja ki a biztonsági rést. Például a "felhasználói névterek" alapértelmezés szerint engedélyezve van az Ubuntu és a Fedora rendszeren, de nincs engedélyezve a Debian és RHEL rendszeren. A sebezhetőséget javító javítás április 13-án került be a Linux kernelbe. A Debian, Arch Linux és Fedora projektek már létrehozták a csomagfrissítéseket. Ubuntu, RHEL és SUSE esetében a frissítések előkészítés alatt állnak.

A probléma az xt_compat_target_from_user() függvényben jelentkezik a memória méretének helytelen kiszámítása miatt, amikor a kernelstruktúrákat 32 bitesről 64 bitesre való átalakítás után mentik. A hiba lehetővé teszi négy nullbájt írását a 0x4C eltolás által határolt, lefoglalt pufferen kívüli tetszőleges pozícióba. Ez a funkció elegendőnek bizonyult egy olyan exploit létrehozásához, amely lehetővé tette a root jogok megszerzését - az m_list->next mutató törlésével az msg_msg struktúrában a feltételek megteremtődtek az adatokhoz való hozzáféréshez a memória felszabadítása után (use-after-free), ami Ezt követően az msgsnd() rendszerhívás manipulálásával információkat szereztek a címekről és más struktúrák változásairól.

Forrás: opennet.ru

Hozzászólás