Уразлівасць у карыстацкім асяроддзі Enlightenment, якая дазваляе атрымаць правы root

У карыстацкім асяроддзі Enlightenment выяўленая ўразлівасць (CVE-2022-37706), якая дазваляе непрывілеяванаму лакальнаму карыстачу выканаць код з правамі root. Уразлівасць пакуль не выпраўлена (0-day), але ў адкрытым доступе ўжо маецца эксплоіт, пратэставаны ў Ubuntu 22.04/XNUMX.

Праблема прысутнічае ў выкананым файле enlightenment_sys, які пастаўляецца са сцягам suid root і што выконвае праз выклік system() вызначаныя дазволеныя каманды, такія як мантаванне назапашвальніка ўтылітай mount. З-за некарэктнай працы функцыі, якая фармуе радок, якая перадаецца ў выклік system(), з аргументаў якая запускаецца каманды выразаюцца двукоссі, што можна выкарыстоўвацца для запуску свайго кода. Напрыклад, пры запуску 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

з-за выразанні падвойных двукоссяў, замест паказанай каманды '/bin/mount … "/dev/../tmp/;/tmp/exploit" /tmp///net' у функцыю system() будзе перададзены радок без падвойных двукоссяў ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net', што прывядзе да асобнага выканання каманды '/tmp/exploit /tmp///net' замест апрацоўкі як часткі шляху да прыладзе. Радкі "/dev/../tmp/" і "/tmp///net" падабраны для абыходу праверкі аргументаў каманды mount у enlightenment_sys (прылада мантавання павінна пачынацца на /dev/ і паказваць на існуючы файл, а тры знака "/" у кропцы мантавання пазначаны для дасягнення патрабаванага памеру шляху).

Крыніца: opennet.ru

Дадаць каментар