Az io_uring alrendszer biztonsági rése, amely lehetővé teszi root jogosultságok megszerzését

A kernel által biztosított aszinkron I/O interfészen, az io_uring-on LinuxEgy sebezhetőséget (CVE-2024-0582) azonosítottak, amely lehetővé teszi egy jogosulatlan felhasználó számára, hogy root jogosultságokat szerezzen a rendszeren. A sebezhetőség kihasználásához egyszerű helyi hozzáférés szükséges a rendszerhez, névtér-manipuláció nélkül. Jelenleg egy működő kihasználó lehetőség nyilvánosan elérhető, és egy második kihasználási technikát is részletesen ismertetnek.

A sérülékenységet az io_uring alrendszer egy már felszabadult memóriablokkjához (használat után szabadon) való hozzáférés okozza, amely az IORING_REGISTER_PBUF_RING jelzővel létrehozott gyűrűpuffer regisztrálásakor és felszabadításakor jelentkezik. Amikor az mmap() műveletet alkalmazzuk egy pufferre, az a felszabadítási művelet végrehajtása után is tükröződik a felhasználói térben (IORING_UNREGISTER_PBUF_RING). Ezzel a funkcióval a támadó adatokat olvashat és írhat a kernel memórialefoglaló rendszerébe visszaküldött memórialapokra.

A probléma a kernel megjelenése óta fennáll. Linux 6.4-es verzióban, és javítva a 6.7-es és 6.6.5-ös kiadásokban, valamint a 6.5.0-21-es kernelcsomagban, amelyet a következőre készítettek: Ubuntu 22.04 és 23.10. Érdemes megjegyezni, hogy a problémát a fő kernelben javították 2023 decemberében, a Google Zero projekt január 8-án tette nyilvánosan elérhetővé a sebezhetőségről szóló hibajelentést, és a javított 6.5-ös kernelt tartalmazó csomag a következőhöz: Ubuntu csak 2024. február 22-én alakult. Más disztribúciókban a javításokat és a sebezhetőségeknek való kitettséget a következő oldalakon követheti nyomon: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

Az első exploit nagyszámú támadó által vezérelt memóriaoldal létrehozását manipulálja, hogy meghatározza a memória elrendezését a rendszermagban, és hozzáférjen a szomszédos fizikai memóriaoldalakhoz, a speciálisan kitöltött hálózati socket-struktúrák tartalmát jeladóként használva. A kód futtatásához az exploit egy „gadget”-et (a kernelben létező utasítások sorozatát) használ, amely a call_usermodehelper_exec függvény végrehajtásához vezet, amelynek célja, hogy folyamatokat indítson el a felhasználói térben a kernelből.

A második kihasználás azon a tényen alapszik, hogy amikor a gyorsítótárban lévő összes födémblokk kimerült (például egy fájl többszöri megnyitásakor), a szabad memóriaoldalakat, amelyekhez a támadó még mindig hozzá tud férni, a memóriaelosztó rendszer felhasználja a létrehozásához. ebbe a blokkba kell elhelyezni egy új födémblokkot és minden új fájlszerkezetet. Ennek megfelelően egyes fájlstruktúrák olyan memóriaoldalakra kerülnek, amelyeket a támadó olvashat és írhat. A művelet ebben az esetben abból áll, hogy megszervezi a kívánt fájl bejegyzését a fájl gyorsítótárba, és lecseréli az f_mode mezőt a kapcsolódó fájlstruktúrákban, amely meghatározza a hozzáférési jogokat, ami lehetővé teszi a kívánt rendszerfájl létrehozását, például /etc/ passwd, írható.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster