Nyilvánosan elérhetővé vált a Linux kernel hetedik sebezhetőségére vonatkozó exploit (1, 2-3, 4, 5, 6), amely lehetővé teszi, hogy egy nem privilegizált helyi felhasználó root jogosultságot szerezzen azáltal, hogy adatokat ír felül a lapozó cache-ben. A CVE azonosító még nem került kiadásra, a probléma mibenlétéről egyelőre csak az exploit kód áll rendelkezésre. A javítás csak patch formájában érhető el, amelyet május 20-án tettek közzé, és május 21-én elfogadták a Linux kernel fő átébe (a javító kernel verziók még nem elérhetők).
A sebezhetőség a GRO (Generic Receive Offload) technológia megvalósításában található, amelyet a szegmentált csomagok feldolgozásának felgyorsítására használnak. A sebezhetőség a zerocopy mechanizmus hibájából fakad a skb_gro_receive() függvényben, amely közvetlenül módosítja az adatokat a lapozó cache-ben a felesleges pufferezés kiküszöbölése érdekében. Ha a SKBFL_MANAGED_FRAG_REFS jelző be volt állítva, akkor elmaradt a hivatkozás megőrzése a felszabadított memóriacíkekre a shinfo->frags mezőben, majd ezt a mezőt egy másik skb-hez csatolták anélkül, hogy a hivatkozási számlálót módosították volna, ami a memória használatára utal, miután azt felszabadították (use-after-free). A problémát sikerült kihasználni azért, hogy adatokat írjanak felül a lapozó cache-ben, a io_uring buffer pointer manipulációjának köszönhetően.
A támadás lehetséges, ha az io_uring (io_uring_disabled=0) alrendszer be van kapcsolva a rendszeren. Az exploit működéséhez a rendszerben olvasható végrehajtható fájlnak kell lennie SUID-root joggal. A kihasználás mechanikája abban áll, hogy a támadó a felhasználói bázist a lapozó cache-be juttatja, majd behelyettesíti a cache-be a "hax::0:0::/root:/bin/sh" sort. Ezt követően a "su hax" parancsot indítják el, amely nem az eredeti felhasználói bázist kapja meg a tárolóról, hanem egy módosított másolatot a "hax" helyettesítő bejelentkezési névvel, amelyhez root jogosultság és üres jelszó van rendelve. Az exploit működését az Ubuntu 24.04-en tesztelték.
Forrás: opennet.ru
