În managerul de sistem systemd vulnerabilitate (), care permite potențial executarea codului cu privilegii ridicate prin trimiterea unei cereri special formate pe magistrala DBus. Problema a fost corectată în versiunea de test. (patch-uri care rezolvă problema: , , ). Vulnerabilitatea a fost remediată în distribuțiile , , (apar în RHEL 8, dar nu afectează RHEL 7), , și , dar, la momentul redactării știrii, rămâne nerezolvată în și .
Vulnerabilitatea este cauzată de accesul la o zonă de memorie deja eliberată (use-after-free), care apare în timpul execuției asincrone a cererilor către Polkit în timpul procesării mesajelor DBus. Unele interfețe DBus folosesc un cache pentru a stoca obiecte pe termen scurt și curăță elementele din cache imediat ce magistrala DBus devine liberă pentru a procesa alte cereri. Dacă handler-ul metodei DBus utilizează bus_verify_polkit_async(), acesta poate necesita așteptarea finalizării acțiunii în Polkit. Odată ce Polkit este pregătit, handler-ul este apelat din nou și accesează datele care au fost anterior alocate în memorie. Dacă cererea către Polkit durează prea mult, elementele din cache sunt curățate înainte ca handler-ul metodei DBus să fie apelat a doua oară.
Printre serviciile care permit exploatarea vulnerabilității se numără systemd-machined, care oferă API-ul DBus org.freedesktop.machine1.Image.Clone, ce duce la stocarea temporară a datelor în cache și la accesarea asincronă a Polkit. Interfața
org.freedesktop.machine1.Image.Clone este disponibilă tuturor utilizatorilor neprivilegiați ai sistemului, care pot iniția prăbușirea serviciilor systemd sau pot obține potențial executarea codului cu privilegii de root (prototipul exploatului nu a fost demonstrat încă). Codul care permite exploatarea vulnerabilității a fost în systemd-machined în 2015 în versiunea (în RHEL 7.x se utilizează systemd 219).
Sursa: opennet.ro
