V uživatelském prostředí Enlightenment byla objevena zranitelnost (CVE-2022-37706), která umožňuje neprivilegovanému lokálnímu uživateli spouštět kód s root oprávněními. Zranitelnost dosud nebyla opravena (zero-day), ale exploit testovaný ve veřejné doméně je již k dispozici. Ubuntu 22.04.
Problém se vyskytuje ve spustitelném souboru enlightenment_sys, který je dodáván s kořenovým příznakem suid a spouští určité povolené příkazy prostřednictvím volání system(), například připojení disku pomocí utility mount. Kvůli poruše funkce, která tvoří řetězec předávaný volání system(), jsou z argumentů spouštěného příkazu odstraněny uvozovky, které lze použít ke spuštění vlastního kódu. Například při spuštění 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
Vzhledem k odstranění uvozovek bude funkci system() místo zadaného příkazu '/bin/mount … "/dev/../tmp/;/tmp/exploit" /tmp///net' předán řetězec bez uvozovek '/bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net', což povede k tomu, že příkaz '/tmp/exploit /tmp///net' bude proveden samostatně, místo aby byl zpracován jako součást cesty k zařízení. Řetězce "/dev/../tmp/" a "/tmp///net" jsou zvoleny tak, aby se obcházela kontrola argumentů příkazu mount v enlightenment_sys (připojované zařízení musí začínat na /dev/ a ukazovat na existující soubor a v bodě připojení jsou zadány tři znaky "/" pro dosažení požadované velikosti cesty).
Zdroj: opennet.ru
