Nel gestore di sistema systemd vulnerabilità (), che consente potenzialmente l'esecuzione di codice con privilegi elevati tramite l'invio di una richiesta formattata in modo specifico attraverso il bus DBus. Il problema è stato risolto nella versione di test (patch che risolvono il problema: , , ). La vulnerabilità è stata corretta nelle distribuzioni , , (visibile in RHEL 8, ma non interessa RHEL 7), , e , ma al momento della scrittura della notizia rimane non corretta in e .
La vulnerabilità è causata da un accesso a una zona di memoria già liberata (use-after-free), che si verifica durante l'esecuzione asincrona delle richieste a Polkit durante l'elaborazione dei messaggi DBus. Alcuni interfacce DBus utilizzano una cache per memorizzare gli oggetti per un breve periodo e puliscono gli elementi della cache non appena il bus DBus è libero per gestire altre richieste. Se un gestore del metodo DBus utilizza bus_verify_polkit_async(), potrebbe dover attendere il completamento dell'operazione in Polkit. Una volta che Polkit è pronto, il gestore viene richiamato nuovamente e accede ai dati già precedentemente allocati in memoria. Se la richiesta a Polkit impiega troppo tempo, gli elementi nella cache vengono puliti prima che il gestore del metodo DBus venga chiamato per la seconda volta.
Tra i servizi che consentono di sfruttare la vulnerabilità, si segnala systemd-machined, che fornisce l'API DBus org.freedesktop.machine1.Image.Clone, portando a una temporanea memorizzazione dei dati nella cache e a chiamate asincrone a Polkit. L'interfaccia
org.freedesktop.machine1.Image.Clone è accessibile a tutti gli utenti non privilegiati del sistema, che possono iniziare il crash dei servizi systemd o potenzialmente eseguire codice con diritti di root (una bozza dell'exploit non è ancora stata dimostrata). Il codice per sfruttare la vulnerabilità è stato in systemd-machined nel 2015 nella versione (in RHEL 7.x si utilizza systemd 219).
Fonte: opennet.ru
