È stata scoperta una vulnerabilità nell'ambiente utente Enlightenment (CVE-2022-37706) che consente a un utente locale non privilegiato di eseguire codice con i diritti di root. La vulnerabilità non è ancora stata corretta (0-day), ma è già disponibile un exploit pubblicamente accessibile, testato su Ubuntu 22.04.
Il problema è presente nel file eseguibile enlightenment_sys, fornito con il flag suid root, che esegue determinate comandi consentiti tramite una chiamata system(), come il montaggio di dispositivi tramite l'utilità mount. A causa di un malfunzionamento nella funzione che genera la stringa passata alla chiamata system(), le virgolette vengono rimosse dagli argomenti del comando eseguito, il che può essere sfruttato per eseguire il proprio codice. Ad esempio, eseguendo mkdir -p /tmp/net mkdir -p «/tmp/;/tmp/exploit» echo «/bin/sh» > /tmp/exploit chmod a+x /tmp/exploit enlightenment_sys /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), «/dev/../tmp/;/tmp/exploit» /tmp///net
A causa dell'eliminazione delle virgolette doppie, invece del comando specificato ‘/bin/mount … «/dev/../tmp/;/tmp/exploit» /tmp///net’, verrà passata alla funzione system() una stringa senza virgolette ‘/bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net’, il che porterà all'esecuzione separata del comando ‘/tmp/exploit /tmp///net’ invece di essere trattato come parte del percorso del dispositivo. Le stringhe «/dev/../tmp/» e «/tmp///net» sono state scelte per eludere il controllo degli argomenti del comando mount in enlightenment_sys (il dispositivo di montaggio deve iniziare con /dev/ e puntare a un file esistente, e i tre caratteri «/» nel punto di montaggio sono specificati per raggiungere la dimensione richiesta del percorso).
Fonte: opennet.ru
