W menedżerze systemu
Luka wynika z dostępu do już zwolnionego obszaru pamięci (use-after-free), co ma miejsce podczas asynchronicznego wykonywania żądań do Polkita podczas przetwarzania komunikatów DBus. Niektóre interfejsy DBus wykorzystują pamięć podręczną do krótkotrwałego przechowywania obiektów i opróżniają wpisy pamięci podręcznej, gdy tylko magistrala DBus będzie wolna i może przetwarzać inne żądania. Jeśli procedura obsługi metody DBus używa bus_verify_polkit_async(), może być konieczne poczekanie na zakończenie akcji Polkit. Gdy Polkit będzie gotowy, procedura obsługi wywoływana jest ponownie i uzyskuje dostęp do danych już rozproszonych w pamięci. Jeśli żądanie do Polkita trwa zbyt długo, elementy w pamięci podręcznej zostaną wyczyszczone przed ponownym wywołaniem procedury obsługi metody DBus.
Wśród usług umożliwiających wykorzystanie luki wyróżnia się systemd-machined, która udostępnia DBus API org.freedesktop.machine1.Image.Clone, umożliwiając tymczasowe przechowywanie danych w pamięci podręcznej i asynchroniczny dostęp do Polkita. Interfejs
org.freedesktop.machine1.Image.Clone jest dostępny dla wszystkich nieuprzywilejowanych użytkowników systemu, co może spowodować awarię usług systemowych lub potencjalnie spowodować wykonanie kodu jako root (prototyp exploita nie został jeszcze zademonstrowany). Kod umożliwiający wykorzystanie luki to
Źródło: opennet.ru