Vulnerabileco kiu permesas fuĝsekvencojn esti enigitaj en aliulajn terminalojn

Vulnerabileco (CVE-2024-28085) estis identigita en la muro-utilo, provizita en la pako util-linukso kaj destinita por sendi mesaĝojn al terminaloj, kio permesas atakon kontraŭ la terminaloj de aliaj uzantoj per manipulado de eskapaj sekvencoj. La problemo estas kaŭzita de la muro-servaĵo blokanta fuĝsekvencojn sur la enigfluo sed ne farante tion sur komandliniaj argumentoj, permesante al atakanto eskapi fuĝsekvencojn sur la terminaloj de aliaj uzantoj.

Ekzemple, efektivigante 'muro $(printf "\033[33mHI")' vi povas presi "HI" flava. Uzante eskapsekvencojn, kiuj ebligas al vi movi la montrilon, malbari kaj anstataŭigi enhavon sur la ekrano, vi povas simuli montri la sudo-pasvorton en la terminalo de alia uzanto. Se la uzanto ne rimarkas la lertaĵon kaj enmetas sian pasvorton, la pasvorto aperos en la eniga historio kiel neekzistanta komando (fakte, la uzanto enmetos sian pasvorton sur la komandlinio anstataŭ komando). “\033[3A” // movas la kursoron supren 3 liniojn “\033[K” // forigas la antaŭan eliron “[sudo] pasvorton por a_uzanto:” // aperigas imitan sudo-peton “\033[?25l” / / agordi fonkoloron por kaŝi enigon "\033[38;2;48;10;36m"

Kiam averto estas eligita, ke la enigita komando ne estis trovita, multaj distribuoj rulas la /usr/lib/command-not-found-traktilon, kiu provas identigi la pakaĵon kiu enhavas la mankantan komandon kaj havigi sugeston pri ĉu ĝi povas esti instalita. . La problemo estas, ke kiam la komand-ne-trovita prizorganto estas lanĉita, neekzistanta komando estas transdonita al ĝi kiel komandlinia parametro, kiu estas videbla kiam oni vidas procezojn en la sistemo (ekzemple, kiam oni provas ruli la malinstalitan ilon). "xsnow", "/usr" estos videbla en la listo de procezoj /lib/command-not-found - xsnow"). Sekve, la atakanto povas kontroli kurantajn procezojn (ekzemple, analizante la aperon de "/proc/$pid/cmdline" por la antaŭdirita PID-nombro) kaj determini la pasvorton enigitan de la viktimo sur la komandlinio.

Por ke la uzanto enigu pasvorton responde al fikcia sudo-promeso, oni proponis lertaĵon, kies esenco estas spuri la realan lanĉon de la sudo-utilo en la listo de procezoj, atendi ke ĝi finiĝos, kaj fari atakon tra la "muro" tuj post tio. Manipulante fuĝsekvencojn, atakanto povas anstataŭigi la mesaĝon post la fakta ekzekuto de sudo kun falsa pasvorta reenira prompto. La viktimo povas pensi, ke li eraris kiam li enigis la pasvorton kaj enigu la pasvorton duan fojon, malkaŝante la pasvorton en la argumentoj de la "komando-ne-trovita" prizorganto.

Sukcesa atako postulas agordi la "mesg" reĝimon al "y", kiu estas agordita defaŭlte en Ubuntu, Debian kaj CentOS/RHEL. La atako estis pruvita en Ubuntu 22.04 en sia defaŭlta agordo uzante gnome-terminalon. En Debian, la atako estas malfacila, ĉar la "komando-ne-trovita" prizorganto ne estas ebligita defaŭlte en la distribuo, kaj en CentOS/RHEL la atako ne funkcios, ĉar la muro-utilo estas instalita sen la setgid flago kaj faras ne havas aliron al aliuloj-terminaloj. Kiam vi uzas Windows-terminalon, la atako povas esti modifita por ŝanĝi la enhavon de la tondujo.

La vundebleco ĉeestas en la pako util-linux ekde 2013, post kiam la eldono 2.24 aldonis la kapablon specifi mesaĝon sur la muro komandlinio, sed forgesis purigi la fuĝsekvencojn. Riparo por la vundebleco estas inkluzivita en la hieraŭa eldono de util-linux 2.40. Estas rimarkinde, ke kiam oni provis ripari la vundeblecon en la liberigo de util-linux 2.39, alia simila vundebleco estis identigita, kiu permesas anstataŭigon de kontrolsignoj per manipulado de lokoj.

fonto: opennet.ru

Aldoni komenton