Në utilitarin wall, që jepet në paketën util-linux dhe është e destinuar për të dërguar mesazhe në terminale, është zbuluar një vulnerabilitet (CVE-2024-28085), i cili lejon sulmin ndaj terminaleve të përdoruesve të tjerë përmes manipulimit me sekvencat e escape. Problemi është se utilitari wall bllokon përdorimin e sekvencave të escape në rrjedhën hyrëse, por nuk e kryen këtë operacion për argumentet në linjën e komandës, çka lejon sulmuesin të ekzekutojë sekvenca escape në terminalin e përdoruesve të tjerë.
Për shembull, duke ekzekutuar ‘wall $(printf «\033[33mHI»)’ mund të shfaqet mesazhi «HI» në ngjyrë të verdhë. Duke përdorur sekvenca escape, të cilat lejojnë lëvizjen e shenjuesit, pastrimin dhe zëvendësimin e përmbajtjes në ekran, mund të simulohet shfaqja e kërkesës për hyrjen e fjalëkalimit nga utilitari sudo në terminalin e një përdoruesi tjetër. Nëse përdoruesi nuk e sheh mashtrimin dhe fut fjalëkalimin e tij, ai do të shfaqet në historinë e hyrjeve si një komandë që nuk ekziston (në thelb, përdoruesi vendos fjalëkalimin e tij në linjën e komandës në vend të një komande). «\033[3A» // lëvizim shenjuesin lart 3 rreshta «\033[K» // fshijmë daljen e mëparshme «[sudo] password for a_user:» // shfaqim një kërkesë false sudo «\033[?25l» // vendosim ngjyrën e sfondit për të fshehur hyrjen «\033[38;2;48;10;36m»
Gjatë shfaqjes së një paralajmërimi se komanda e futur nuk u gjet, në shumë distribucione aktivizohet përpunuesi /usr/lib/command-not-found, i cili përpiqet të përcaktojë paketën në të cilën është komanda e munguar dhe të japë një sugjerim për mundësinë e instalimit të saj. Problemi është se gjatë aktivizimit të përpunuesit command-not-found, komanda që nuk ekziston dërgohet si parametr në linjën e komandës, e cila është e dukshme kur shqyrtohen proceset në sistem (për shembull, kur përpiqet të aktivizojë utilitarin e painstaluar «xsnow», në listën e proceseve do të duket «/usr/lib/command-not-found — xsnow»). Për pasojë, sulmuesi mund të organizojë monitorimin e proceseve që po aktivizohen (për shembull, duke analizuar shfaqjen e «/proc/$pid/cmdline» për numrin e parashikuar PID) dhe të përcaktojë fjalëkalimin e futur nga viktima në linjën e komandës.
Për të bërë që përdoruesi të futë fjalëkalimin si përgjigje ndaj një thirrjeje false sudo, propozohet një truk që përfshin ndjekjen në listën e proceseve të ekzekutimit real të utilitarit sudo, pritjen për përfundimin e tij dhe realizimin e sulmit përmes "wall" menjëherë pas kësaj. Përmes manipulimeve me sekvencat escape, sulmuesi mund të zëvendësojë mesazhin pas ekzekutimit të real të sudo me një thirrje false për futjen përsëri të fjalëkalimit. Viktima mund të mendojë se gaboi gjatë futjes dhe të futë fjalëkalimin për herë të dytë, duke e ekspozuar atë në argumentet e trajtuesit "command-not-found".
Për një sulm të suksesshëm, kërkohet vendosja e modit "mesg" në vlerën "y", e cila është vendosur si parazgjedhje në Ubuntu, Debian dhe CentOS/RHEL. Mundësia për të realizuar sulmin është demonstruar në Ubuntu 22.04 me konfigurimin e parazgjedhjes gjatë përdorimit të gnome-terminal. Në Debian, sulmi është i vështirë, pasi në shpërndarje trajtuesi "command-not-found" nuk është aktivizuar si parazgjedhje, ndërsa në CentOS/RHEL sulmi nuk do të funksionojë, pasi utilitari wall është instaluar pa flamurin setgid dhe nuk ka qasje në terminalet e tjerëve. Gjatë përdorimit të windows-terminal, sulmi mund të modifikohet për të ndryshuar përmbajtjen e buferit të kopjimit.
Vulnerability manifests in the util-linux package since 2013, after the release of 2.24 added the ability to specify a message in the wall command line but forgot to apply escape sequence cleaning. The vulnerability fix is included in yesterday's release of util-linux 2.40. Notably, an attempt to fix the vulnerability in util-linux 2.39 revealed another similar vulnerability that allows manipulation of control characters through locale settings.
Burimi: opennet.ru
