Haavatavus Enlightenmenti kasutajakeskkonnas, mis võimaldab juurjuurdepääsu

Enlightenmenti kasutajakeskkonnas on tuvastatud haavatavus (CVE-2022-37706), mis võimaldab privilegeerimata kohalikul kasutajal käivitada koodi juurõigustega. Haavatavust ei ole veel parandatud (0-päevane), kuid Ubuntu 22.04-s testitud ärakasutamine on juba avalikus omandis saadaval.

Probleem on käivitatavas failis enlightenment_sys, mis tarnitakse suid juurlipuga ja täidab teatud lubatud käske, näiteks ühendab draivi mount-utiliidiga, kutsudes välja süsteemi(). System()-kutsele edastatud stringi genereeriva funktsiooni ebaõige töö tõttu lõigatakse käivitatava käsu argumentidest välja jutumärgid, mida saab kasutada oma koodi käivitamiseks. Näiteks kui käivitate käsu 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

jutumärkide eemaldamise tõttu kasutatakse määratud käsu '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' asemel topeltjutumärkideta string edastatakse süsteemi() funktsioonile ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net', mis põhjustab käsu '/tmp/exploit /tmp///net ' tuleb käivitada eraldi, selle asemel, et seda töödelda osana seadmeni. Read "/dev/../tmp/" ja "/tmp///net" on valitud mount-käsu argumentide kontrollimise vältimiseks rakenduses enlightenment_sys (ühendusseade peab algama /dev/-ga ja osutama olemasolevale failile, ja kolm tähemärki "/" ühendamispunktis on määratud vajaliku tee suuruse saavutamiseks).

Allikas: opennet.ru

Lisa kommentaar