Se ha descubierto una vulnerabilidad (CVE-2022-37706) en el entorno de usuario Enlightenment que permite a un usuario local no privilegiado ejecutar código con derechos de root. La vulnerabilidad aún no ha sido corregida (0-day), pero ya existe un exploit disponible públicamente, probado en Ubuntu 22.04.
El problema se encuentra en el archivo ejecutable enlightenment_sys, que se entrega con la bandera suid root y que ejecuta ciertos comandos permitidos, como montar un dispositivo a través de la utilidad mount. Debido a un mal funcionamiento en la función que forma la cadena pasada a la llamada system(), las comillas se eliminan de los argumentos del comando ejecutado, lo que puede ser explotado para lanzar su propio código. Por ejemplo, al ejecutar 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
Debido a la eliminación de las comillas dobles, en lugar del comando especificado '/bin/mount ... '/dev/../tmp/; /tmp/exploit' /tmp///net', se pasará a la función system() una cadena sin comillas dobles '/bin/mount ... /dev/../tmp/; /tmp/exploit /tmp///net', lo que provocará la ejecución independiente del comando '/tmp/exploit /tmp///net' en lugar de ser tratado como parte de la ruta del dispositivo. Las cadenas '/dev/../tmp/' y '/tmp///net' están diseñadas para eludir la validación de argumentos del comando mount en enlightenment_sys (el dispositivo de montaje debe comenzar con /dev/ y apuntar a un archivo existente, y los tres caracteres '/' en el punto de montaje se especifican para alcanzar el tamaño de ruta requerido).
Fuente: opennet.ru
