Uma vulnerabilidade foi identificada no ambiente de usuário Enlightenment (CVE-2022-37706), permitindo que um usuário local não privilegiado execute código com direitos de root. A vulnerabilidade ainda não foi corrigida (0-day), mas já existe um exploit testado no Ubuntu 22.04 disponível publicamente.
O problema está presente no arquivo executável enlightenment_sys, entregue com a flag suid root e executando através da chamada system() certos comandos permitidos, como a montagem de um dispositivo pela utilidade mount. Devido a um mau funcionamento da função que forma a string passada na chamada system(), as aspas dos argumentos do comando executável são cortadas, o que pode ser utilizado para executar seu próprio código. Por exemplo, ao executar 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
Devido ao corte das aspas duplas, em vez do comando indicado ‘/bin/mount … '/dev/../tmp/;/tmp/exploit' /tmp///net’, será passada para a função system() uma string sem aspas duplas ‘/bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net’, o que resultará na execução separada do comando ‘/tmp/exploit /tmp///net’ em vez de ser tratado como parte do caminho do dispositivo. As strings ‘/dev/../tmp/’ e ‘/tmp///net’ são escolhidas para contornar a verificação de argumentos do comando mount no enlightenment_sys (o dispositivo a ser montado deve começar em /dev/ e apontar para um arquivo existente, e os três caracteres ‘/’ no ponto de montagem são especificados para atingir o tamanho de caminho requerido).
Fonte: opennet.ru
