A rendszerkezelőben, a systemd-ben vulnerability (), amely potenciálisan lehetővé teszi a saját kódunk futtatását megnövelt jogosultságokkal, ha kifejezetten formázott kérést küldünk a DBus buszon. A probléma javítva lett a tesztkiadásban (a problémát megoldó javítások: , , ). A sebezhetőség elhárítva van a disztribúciókban , , (a RHEL 8-ban jelentkezik, de nem érinti a RHEL 7-et), , és , de a hír írásának pillanatában még mindig nem javították és .
A sebezhetőséget egy már felszabadított memória területhez való hozzáférés (use-after-free) okozza, amely aszinkron kérések Polkit-nek történő feldolgozása során lép fel a DBus üzenetek kezelése közben. Néhány DBus interfész gyorsítótárat használ az objektumok rövid ideig történő tárolására, és törli a gyorsítótár elemeit, amint a DBus busz elérhetővé válik más kérések feldolgozására. Ha a DBus módszer kezelője bus_verify_polkit_async()-ot használ, lehet, hogy várnia kell a Polkit-ban végzett művelet befejezésére. Amikor a Polkit kész, a kezelőt újra hívják, és az már korábban a memóriában allokált adatokhoz fér hozzá. Ha a Polkit-hez intézett kérés túl hosszú ideig tart, a gyorsítótár elemei törlődnek, mielőtt a DBus módszer kezelője másodszor is hívásra kerülne.
Azok közül a szolgáltatások közül, amelyek lehetővé teszik a sebezhetőség kihasználását, a systemd-machined emelhető ki, amely a DBus API org.freedesktop.machine1.Image.Clone-t biztosít, ami adatokat ideiglenesen gyorsítótárba helyez, és aszinkron hívásokat végez a Polkit-nél. Az interfész
org.freedesktop.machine1.Image.Clone minden nem privilégizált rendszerhasználó számára elérhető, akik képesek crash-elni a systemd szolgáltatásokat, vagy potenciálisan kódot futtatni root jogokkal (az exploit prototípusa eddig nem került bemutatásra). A sebezhetőség kihasználására alkalmas kód a systemd-machined-ben már 2015-ben meglévő volt a (a RHEL 7.x rendszerben a systemd 219 fut).
Forrás: opennet.ru
