Haavatavus, mis võimaldab sisestada escape-järjestusi teiste terminalidesse

Utiliidis wall, mis on saadaval util-linux pakendina ja mõeldud sõnumite saatmiseks terminalidesse, leiti turvaauk (CVE-2024-28085), mis võimaldab rünnata teiste kasutajate terminalesid escape-järjestuste manipuleerimise kaudu. Probleem tuleneb sellest, et utiliit wall blokeerib escape-järjestuste kasutamise sisendvoos, kuid ei tee seda käsurea argumentide puhul, mis võimaldab ründajal täita escape-järjestusi teiste kasutajate terminalides.

Näiteks, täites 'wall $(printf "\033[33mHI")' saab kuvada sõnumi 'HI' kollases värvis. Escape-järjestuste abil, mis võimaldavad kursorit liigutada, puhastada ja asendada ekraani sisu, saab simuleerida vale sudo parooli sisestamise kutset teise kasutaja terminalis. Kui kasutaja ei märka petuskeemi ja sisestab oma parooli, siis parool kuvatakse sisestusajaloo kui mitteeksisteeriv käsk (sisuliselt sisestab kasutaja parooli käsurea asemel). "\033[3A" // liigutame kursorit ülespoole 3 rida "\033[K" // kustutame eelneva väljundi "[sudo] password for a_user:" // kuvame vale sudo kutse "\033[?25l" // seadistame taustavärvi sisendi peitmiseks "\033[38;2;48;10;36m"

Hoiatuse väljastamisel, et sisestatud käsku ei leitud, käivitatakse paljudes distributsioonides töötleja /usr/lib/command-not-found, mis proovib määrata puuduvat käsku sisaldava paketi ning anda soovitus selle installimiseks. Probleem on selles, et command-not-found töötlejat käivitades edastatakse puuduv käsk sellele käsurea parameetrina, mis on nähtav süsteemis protsesside vaatamisel (näiteks, kui proovite käivitada installimata utiliiti 'xsnow', nähakse protsesside nimekirjas ' /usr/lib/command-not-found -- xsnow'). Seetõttu võib ründaja korraldada käivitatavate protsesside jälgimise (näiteks analüüsides ' /proc/$pid/cmdline' prognoositava PID numbri jaoks) ja kindlaks teha ohvri sisestatud parooli käsureas.

Kasutaja parooli sisestamiseks vale sudo kutse vastusena on ettepanek jälgida sudo utiliidi tegeliku käivitamise protsesside loendis, oodata selle lõpetamist ja rünnata "wall" kaudu kohe pärast seda. Kallutades escape-järjekordi, saab ründaja asendada sudo tegeliku täitmise järel sõnumi vale parooli taasküsimise kutsega. Ohver võib arvata, et ta tegi sisestamisel vea ja sisestada parooli uuesti, paljastades parooli "command-not-found" käsitleja argumentides.

Eduka rünnaku jaoks on vajalik kasutada "mesg" režiimi seadistamist väärtusele "y", mis on vaikimisi Ubuntu, Debian ja CentOS/RHEL-is. Rünnaku teostatavust demonstreeriti Ubuntu 22.04 vaikimisi konfiguratsiooniga gnome-terminali kasutades. Debiani puhul on rünnak keeruline, kuna vaikimisi ei ole "command-not-found" käsitlejat lubatud, ja CentOS/RHEL-is rünnak ei õnnestu, kuna wall utiliit on installitud ilma setgid-flagi ja ei pääse teiste terminalide juurde. Windows-terminali kasutamisel võib rünnakut kohandada lõikepuhvri sisu muutmiseks.

Haavatavus ilmus util-linux pakendis alates 2013. aastast, pärast seda, kui versioonis 2.24 lisati võimalus määrata sõnumi seinale käskude rea kaudu, kuid unustati escape-järjekordade puhastamine. Haavatavuse parandamine on lisatud eilse util-linux 2.40 väljaande juurde. Huvitaval kombel tuvastati util-linux 2.39 väljaande haavatavuse parandamise katsel veel üks sarnane haavatavus, mis lubas juhtivate märkide asendamise manipuleerimisega lokaalide kaudu.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster