U systemd sistem menadžeru ranjivost (), što vam potencijalno omogućava da izvršite svoj kod s povišenim privilegijama slanjem posebno dizajniranog zahtjeva preko DBus magistrale. Problem je riješen u testnom izdanju (zakrpe koje rješavaju problem: , , ). Ranjivost je ispravljena u distribucijama , , (pojavljuje se u RHEL 8, ali ne utiče na RHEL 7), , и , ali u vrijeme pisanja vijesti ostaju neispravljene u и .
Ranjivost je uzrokovana pristupom već oslobođenom memorijskom području (use-after-free), koji se javlja kada se asinhrono izvršavaju zahtjevi za Polkit tokom obrade DBus poruka. Neka DBus sučelja koriste keš memoriju za pohranjivanje objekata na kratko vrijeme i ispišu unose keša čim DBus sabirnica bude slobodna za obradu drugih zahtjeva. Ako rukovatelj DBus metodom koristi bus_verify_polkit_async(), možda će morati pričekati da se Polkit akcija završi. Nakon što je Polkit spreman, rukovalac se ponovo poziva i pristupa podacima koji su već distribuirani u memoriji. Ako zahtjev za Polkit traje predugo, stavke u kešu će se obrisati prije nego što se drugi put pozove rukovalac DBus metoda.
Među servisima koji omogućavaju eksploataciju ranjivosti, ističe se systemd-machined, koji obezbeđuje DBus API org.freedesktop.machine1.Image.Clone, što dovodi do privremenog skladištenja podataka u kešu i asinhronog pristupa Polkitu. Interfejs
org.freedesktop.machine1.Image.Clone je dostupan svim neprivilegiranim korisnicima sistema, koji mogu srušiti sistemske usluge ili potencijalno uzrokovati izvršavanje koda kao root (prototip eksploatacije još nije demonstriran). Kod koji je omogućio iskorištavanje ranjivosti je bio u sistemskoj mašini u verziji 2015 (RHEL 7.x koristi systemd 219).
izvor: opennet.ru
