Feltártak egy technikát a Linux kernel tty alrendszerében lévő sebezhetőség kihasználására

A Google Project Zero csapatának kutatói közzétették a Linux kernel tty alrendszeréből származó TIOCSPGRP ioctl kezelő implementációjában található sebezhetőség (CVE-2020-29661) kihasználásának módszerét, és részletesen megvizsgálták azokat a védelmi mechanizmusokat is, amelyek blokkolhatják ezeket. sebezhetőségek.

A problémát okozó hibát tavaly december 3-án javították a Linux kernelben. A probléma az 5.9.13-as verzióig jelentkező rendszermagokban jelentkezik, de a legtöbb disztribúció a rendszermagcsomagok tavalyi frissítései során (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch) javította a problémát. Hasonló sérülékenységet (CVE-2020-29660) egyidejűleg találtak a TIOCGSID ioctl hívás implementációjában, de azt is már mindenhol kijavították.

A problémát a zároláskor fellépő hiba okozza, ami versenyfeltételhez vezetett a drivers/tty/tty_jobctrl.c kódban, amely a TIOCSPGRP meghívásával a felhasználói térből ioct manipulációkkal kihasznált utánhasználati feltételek létrehozására szolgált. A Debian 10 4.19.0-13-amd64 kernellel működő privilégium-eszkalációját demonstrálták.

A megjelent cikk ugyanakkor nem annyira a működő exploit létrehozásának technikájára fókuszál, hanem arra, hogy milyen eszközök vannak a kernelben az ilyen sérülékenységek elleni védelemre. A következtetés nem megnyugtató: a gyakorlatban nem alkalmazzák az olyan módszereket, mint a memória szegmentálása a kupacban és a memória-hozzáférés szabályozása annak felszabadítása után, mivel ezek a teljesítmény csökkenéséhez vezetnek, illetve a CFI (Control Flow Integrity) alapú védelem, amely blokkolja a kihasználásokat a támadás későbbi szakaszában, fejlesztésre szorul.

Ha azt mérlegeljük, hogy mi jelentene hosszú távon változást, kiemelkedik a fejlett statikus elemzők használata vagy a memóriabiztos nyelvek, például a Rust és a C dialektusok gazdag megjegyzésekkel (például a Checked C) használata az ellenőrzés érdekében. állapot az építési fázisban.zárak, objektumok és mutatók. A védelmi módszerek közé tartozik a panic_on_oops mód aktiválása, a kernelszerkezetek írásvédett módba állítása, valamint a rendszerhívásokhoz való hozzáférés korlátozása olyan mechanizmusokkal, mint például a seccomp.

Forrás: opennet.ru

Hozzászólás