Nyilvánosságra került a hatodik sebezhetőség információja (1, 2-3, 4, 5), amely lehetővé teszi, hogy egy nem privilegizált helyi felhasználó root jogokat szerezzen, ha adatokat ír felül az oldal gyorsítótárában. A sebezhetőség kódneve PinTheft. Kapható egy prototípus exploit. A CVE-azonosító még nem lett hozzárendelve. A javítás egyelőre csak egy patch formájában érhető el, amely május 5-én került kiadásra, és május 11-én fogadták el a netdev szakaszba, de nem került be a kernel frissítésekbe.
A sebezhetőség a RDS (Reliable Datagram Sockets) hálózati protokoll megvalósításában található, amelyet magas sebességű üzenetváltásra terveztek a klaszter csomópontjai között, minimális késlekedéssel és garantált kézbesítéssel. A támadás olyan rendszerekre lehetséges, ahol az io_uring (io_uring_disabled=0) alrendszer be van kapcsolva, és a kernel CONFIG_RDS, CONFIG_RDS_TCP és CONFIG_IO_URING opciókkal van összeállítva. Az exploit működéséhez olvasható SUID-root jelzésű végrehajtható fájlra van szükség a rendszeren.
A rds_tcp kernel modul automatikus betöltéséhez az exploit az RDS-en keresztül kérdezi az adatok küldését SO_RDS_TRANSPORT=2 használatával. Megjegyzendő, hogy a tesztelt Linux disztribúciók közül az alapértelmezett konfigurációban a rds kernel modul csak Arch Linux alatt érhető el. A sebezhetőség megkerülésére a rds és rds_tcp kernel modulok automatikus betöltésének leállítása javasolt: rmmod rds_tcp rds printf 'install rds /bin/false\ninstall rds_tcp /bin/false\n' > /etc/modprobe.d/pintheft.conf
A sebezhetőség egy hibából adódik a zerocopy mechanizmus megvalósításában az rds_message_zcopy_from_user() függvényben, amely közvetlenül módosítja az adatokat az oldal gyorsítótárában, hogy elkerülje a felesleges puffert. Hiba esetén a rm->data.op_nents mező nem lett törölve, ami miatt két szabadítás történt (double-free). A hivatkozási számlálóban megjelenő hibás érték kihasználása lehetővé tette az adatok felülírását az oldal gyorsítótárában, a io_uring fixált puffert mutató mutató manipulálásával.
A mechanizmus kihasználása a kategória összes sérülékenységére jellemző: a támadó egy suid root jelzésű programfájlt ültet el az oldali gyorsítótárban, majd egy ELF fejlécbe beilleszt egy kódot, amely elindítja a \/usr\bin\/sh-t. Ezt követően a program elindítása nem az eredeti végrehajtható fájlt tölti be a tárolóból, hanem a megváltoztatott másolatát az oldali gyorsítótárból. A korábbi exploitokkal ellentétben az új változat kizárólag a „su” segédprogram megtámadására van optimalizálva, de olyan suid programok, mint a mount, passwd, chsh, newgrp, umount és pkexec esetén is alkalmazható.
Forrás: opennet.ru
