Az Enlightenment felhasználói környezetében felfedeztek egy sebezhetőséget (CVE-2022-37706), amely lehetővé teszi, hogy egy jogosítvány nélküli helyi felhasználó root jogokkal kódot hajtson végre. A sebezhetőség jelenleg még nem javított (0-day), de egy nyilvánosan elérhető exploit már létezik, amelyet Ubuntu 22.04 alatt teszteltek.
A probléma az enlightenment_sys végrehajtható fájlban található, amely a root suid zászlóval van szállítva, és a system() híváson keresztül bizonyos engedélyezett parancsokat hajt végre, például a tároló felcsatolását a mount segédprogrammal. A meghívott parancsok indítóargumentumainak zárójelei levágásra kerülnek a system() hívásba jutó, generált sztringből, ami lehetővé teszi a saját kódunk futtatását. Például a következő parancsok futtatása eseté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
A dupla idézőjelek levágása miatt a megadott parancs ‘/bin/mount … '/dev/../tmp/;/tmp/exploit' /tmp///net’ helyett a system() funkcióba egy idézőjelek nélküli sztring fog belépni ‘/bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net’, ami miatt a ‘/tmp/exploit /tmp///net’ parancs külön fog végrehajtódni, ahelyett hogy az eszköz útvonalának részévé válna. A ‘/dev/../tmp/’ és a ‘/tmp///net’ sztringek úgy lettek kiválasztva, hogy megkerüljék a mount parancs argumentumainak ellenőrzését az enlightenment_sys-ben (a felcsatolandó eszköznek /dev/-vel kell kezdődnie, és egy létező fájlra kell utalnia, a három '/' karakter az elérési út szükséges méretének elérése érdekében van megadva).
Forrás: opennet.ru
