Enlightenment'i kasutajakeskkonnas tuvastati haavatavus (CVE-2022-37706), mis võimaldab privileegideta kohalikel kasutajatel käivitada koodi root õigustes. Haavatavust ei ole veel parandatud (0-day), kuid avalikult on saadaval eksploit, mis on testitud Ubuntu 22.04-s.
Probleem esineb enlightenment_sys täidetavas failis, mis on tarnitud suid root lipuga ja käivitab system() kutsumise kaudu teatud lubatud käske, nagu näiteks mälumeedia montimine utiliidiga mount. Funktsiooni vigane töö, mis koostab stringi, mis edastatakse system() kutsumisele, eemaldab käivitatava käsu argumentidest jutumärgid, mida saab kasutada oma koodi käivitamiseks. Näiteks, käivitades 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
kuna topeltjutite eemaldamine, edastatakse süsteemifunktsiooni '/bin/mount ... «/dev/../tmp/;/tmp/exploit» /tmp///net' asemel string ilma jutitate '/bin/mount ... /dev/../tmp/;/tmp/exploit /tmp///net', mis viib käsu '/tmp/exploit /tmp///net' eraldi täitmiseni, mitte seadme tee osana töötlemiseni. Strings '/dev/../tmp/' ja '/tmp///net' on valitud mount-käskluse argumentide kontrollimise ümbersõiduks enlightenment_sys-is (mount seadme tee peab algama '/dev/' ja viitama olemasolevale failile, kolm sümbolit '/' mount-punktis on määratud tee nõutava suuruse saavutamiseks).
Allikas: opennet.ru
