Nel gestore di sistema systemd vulnerabilità (), che potrebbe permettere l'esecuzione del proprio codice con privilegi elevati tramite l'invio di una richiesta appositamente formattata sul bus DBus. Il problema è stato risolto nella versione di test (patch risolutive: , , ). La vulnerabilità è stata rimossa nelle distribuzioni , , (si manifesta in RHEL 8, ma non tocca RHEL 7), , e , ma al momento della scrittura della notizia rimane non corretta in e .
La vulnerabilità è causata da un accesso a un'area di memoria già liberata (use-after-free), che si verifica durante l'esecuzione asincrona delle richieste a Polkit mentre si elaborano i 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 elaborare altre richieste. Se il gestore del metodo DBus utilizza bus_verify_polkit_async(), potrebbe dover attendere il termine dell'operazione in Polkit. Una volta pronto Polkit, il gestore viene richiamato nuovamente e accede ai dati precedentemente allocati in memoria. Se la richiesta a Polkit richiede 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à, è presente systemd-machined, che fornisce l'API DBus org.freedesktop.machine1.Image.Clone, la quale porta a un salvataggio temporaneo 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 avviare il crash dei servizi systemd o potenzialmente ottenere l'esecuzione di codice con privilegi di root (un prototipo dell'exploit non è stato ancora dimostrato). Il codice che consente di sfruttare la vulnerabilità è stato in systemd-machined nel 2015 nella versione (in RHEL 7.x viene utilizzato systemd 219).
Fonte: opennet.ru
