V systémovém správci systemd zranitelnost (), která potenciálně umožňuje provést vlastní kód s vyššími privilegii zasláním speciálně formátované žádosti přes sběrnici DBus. Problém byl opraven v testovací verzi (řešící problém záplaty: , , ). Zranitelnost byla odstraněna v distribucích , , (projevuje se v RHEL 8, ale netýká se RHEL 7), , a , ale k datu napsání této zprávy zůstává neopravená v a .
Zranitelnost je způsobena přístupem k již uvolněné oblasti paměti (use-after-free), která se vyskytuje při asynchronním provádění žádostí k Polkit během zpracování zpráv DBus. Některé DBus rozhraní používají cache k dočasnému uchování objektů a mažou prvky cache, jakmile je sběrnice DBus uvolněná pro zpracování dalších žádostí. Pokud zpracovatel DBus metody používá bus_verify_polkit_async(), může být nutné čekat na dokončení akce v Polkit. Po připravenosti Polkit je zpracovatel volán znovu a přistupuje k již dříve alokovaným datům v paměti. Pokud je žádost k Polkit příliš dlouhá, prvky v cache mají čas se vyčistit, ještě než je zpracovatel DBus metody volán podruhé.
Mezi službami, které umožňují zneužití zranitelnosti, je systemd-machined, který poskytuje DBus API org.freedesktop.machine1.Image.Clone, vedoucí k dočasnému uložení dat do cache a asynchronnímu přístupu k Polkit. Rozhraní
org.freedesktop.machine1.Image.Clone je dostupné všem nepřiděleným uživatelům systému, kteří mohou iniciovat pád služeb systemd nebo potenciálně dosáhnout provedení kódu s oprávněním root (prototyp exploitu zatím nebyl demonstrován). Kód umožňující zneužití zranitelnosti byl v systemd-machined od roku 2015 ve verzi (v RHEL 7.x se používá systemd 219).
Zdroj: opennet.ru
