Zraniteľnosť, ktorá vám umožňuje nahradiť únikové sekvencie v termináloch iných ľudí

Zraniteľnosť (CVE-2024-28085) bola identifikovaná v nástennej utilite, ktorá sa dodáva v balíku util-linux a je určená na odosielanie správ na terminály, čo umožňuje útok na terminály iných používateľov prostredníctvom manipulácie s únikovými sekvenciami. Problém je spôsobený tým, že nástenný nástroj blokuje únikové sekvencie na vstupnom toku, ale nerobí tak v argumentoch príkazového riadka, čo umožňuje útočníkovi uniknúť únikovým sekvenciám na termináloch iných používateľov.

Napríklad spustením 'wall $(printf "\033[33mHI")' môžete vytlačiť "HI" žltou farbou. Použitím sekvencií escape, ktoré vám umožňujú presunúť ukazovateľ, vymazať a nahradiť obsah na obrazovke, môžete simulovať zobrazenie výzvy na zadanie hesla sudo v termináli iného používateľa. Ak si používateľ trik nevšimne a zadá svoje heslo, heslo sa objaví v histórii zadávania ako neexistujúci príkaz (v skutočnosti používateľ zadá svoje heslo na príkazovom riadku namiesto príkazu). “\033[3A” // posuňte kurzor o 3 riadky nahor “\033[K” // vymaže predchádzajúci výstup “[sudo] heslo pre a_user:” // zobrazí fiktívnu žiadosť sudo “\033[?25l” / / nastaviť farbu pozadia na skrytie vstupu "\033[38;2;48;10;36m"

Keď sa zobrazí varovanie, že zadaný príkaz nebol nájdený, mnoho distribúcií spustí obsluhu /usr/lib/command-not-found, ktorá sa pokúsi identifikovať balík, ktorý obsahuje chýbajúci príkaz, a poskytnúť nápovedu o tom, či ho možno nainštalovať. . Problém je v tom, že pri spustení obslužného programu príkazu nenájdený sa mu odovzdá neexistujúci príkaz ako parameter príkazového riadka, ktorý je viditeľný pri prezeraní procesov v systéme (napríklad pri pokuse o spustenie odinštalovaného nástroja „xsnow“, „/usr“ sa zobrazí v zozname procesov /lib/command-not-found - xsnow“). V súlade s tým môže útočník monitorovať bežiace procesy (napríklad analýzou výskytu „/proc/$pid/cmdline“ pre predpokladané číslo PID) a určiť heslo zadané obeťou na príkazovom riadku.

Aby používateľ mohol zadať heslo ako odpoveď na fiktívnu výzvu sudo, bol navrhnutý trik, ktorého podstatou je sledovať skutočné spustenie nástroja sudo v zozname procesov, čakať na jeho dokončenie a okamžite potom vykonať útok cez „stenu“. Manipuláciou s únikovými sekvenciami môže útočník nahradiť správu po skutočnom vykonaní sudo falošnou výzvou na opätovné zadanie hesla. Obeť si môže myslieť, že sa pri zadávaní hesla pomýlila a zadá heslo druhýkrát, pričom heslo odhalí v argumentoch obsluhy „príkaz nenájdený“.

Úspešný útok vyžaduje nastavenie režimu „mesg“ na „y“, ktorý je štandardne nastavený v Ubuntu, Debiane a CentOS/RHEL. Útok bol demonštrovaný v Ubuntu 22.04 v jeho predvolenej konfigurácii pomocou gnome-terminálu. V Debiane je útok náročný, pretože obslužný program „command-not-found“ nie je v distribúcii štandardne povolený a v CentOS/RHEL útok nebude fungovať, pretože nástenný nástroj je nainštalovaný bez príznaku setgid a funguje nemajú prístup k terminálom iných ľudí. Pri použití windows-terminálu je možné útok upraviť tak, aby sa zmenil obsah schránky.

Zraniteľnosť je prítomná v balíku util-linux od roku 2013, po vydaní 2.24 pridala možnosť špecifikovať správu na príkazovom riadku steny, ale zabudla sa vyčistiť únikové sekvencie. Oprava tejto chyby zabezpečenia je zahrnutá vo včerajšom vydaní util-linux 2.40. Je pozoruhodné, že pri pokuse o opravu zraniteľnosti vo vydaní util-linux 2.39 bola identifikovaná ďalšia podobná zraniteľnosť, ktorá umožňuje nahradenie riadiacich znakov manipuláciou s miestnymi nastaveniami.

Zdroj: opennet.ru

Pridať komentár