Ang kahinaan sa kapaligiran ng gumagamit ng Enlightenment na nagbibigay-daan sa iyong makakuha ng mga karapatan sa ugat

May natukoy na kahinaan (CVE-2022-37706) sa Enlightenment user environment na nagbibigay-daan sa isang walang pribilehiyong lokal na user na magsagawa ng code na may mga karapatan sa ugat. Ang kahinaan ay hindi pa naaayos (0-araw), ngunit mayroon nang isang pagsasamantala na magagamit sa pampublikong domain, na sinubukan sa Ubuntu 22.04.

Ang problema ay nasa enlightenment_sys executable, na nagpapadala ng suid root flag at gumaganap ng ilang mga pinahihintulutang command, tulad ng pag-mount ng drive gamit ang mount utility, sa pamamagitan ng isang tawag sa system(). Dahil sa maling pagpapatakbo ng function na bumubuo ng string na ipinasa sa system() na tawag, ang mga quote ay pinutol mula sa mga argumento ng command na inilulunsad, na maaaring magamit upang patakbuhin ang iyong sariling code. Halimbawa, kapag nagpapatakbo ng 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

dahil sa pag-alis ng mga dobleng panipi, sa halip na ang tinukoy na utos na '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' ay magiging isang string na walang dobleng panipi. ipinasa sa system() function na ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net', na magiging sanhi ng command na '/tmp/exploit /tmp///net ' na isasagawa nang hiwalay sa halip na iproseso bilang bahagi ng landas patungo sa device. Ang mga linyang "/dev/../tmp/" at "/tmp///net" ay pinili para i-bypass ang argument checking para sa mount command sa enlightenment_sys (ang mount device ay dapat magsimula sa /dev/ at tumuro sa isang umiiral na file, at ang tatlong "/" na mga character sa mount point ay tinukoy upang makamit ang kinakailangang laki ng landas).

Pinagmulan: opennet.ru

Magdagdag ng komento