Sebezhetőség, amely lehetővé teszi a menekülési szekvenciák helyettesítését mások termináljaiban

A sérülékenységet (CVE-2024-28085) azonosították a fali segédprogramban, amely az util-linux csomagban található, és üzenetek küldésére szolgál a termináloknak, és amely lehetővé teszi más felhasználók termináljai elleni támadást az escape szekvenciák manipulálásával. A problémát az okozza, hogy a fali segédprogram blokkolja a kilépési szekvenciákat a bemeneti adatfolyamon, de nem teszi ezt meg a parancssori argumentumoknál, lehetővé téve a támadó számára, hogy elkerülje a menekülési szekvenciákat más felhasználók termináljain.

Például a 'wall $(printf "\033[33mHI")' végrehajtásával a "HI" sárgával nyomtatható. A mutató mozgatását, a képernyő tartalmának törlését és cseréjét lehetővé tevő escape szekvenciák használatával szimulálhatja a sudo jelszó prompt megjelenítését egy másik felhasználó termináljában. Ha a felhasználó nem veszi észre a trükköt, és beírja a jelszavát, a jelszó nem létező parancsként jelenik meg a beviteli előzményekben (sőt, a felhasználó parancs helyett a jelszavát írja be a parancssorba). "\033[3A" // mozgassa a kurzort 3 sorral feljebb "\033[K" // az előző kimeneti "[sudo] password for a_user:" törlése // ál sudo kérés megjelenítése "\033[?25l" / / háttérszín beállítása a "\033[38;2;48;10;36m" bevitel elrejtéséhez

Amikor figyelmeztetés jelenik meg, hogy a beírt parancs nem található, sok disztribúció futtatja a /usr/lib/command-not-found kezelőt, amely megpróbálja azonosítani a hiányzó parancsot tartalmazó csomagot, és utalást adni arra vonatkozóan, hogy telepíthető-e. . A probléma az, hogy a parancs nem található kezelő elindításakor egy nem létező parancsot adnak át neki parancssori paraméterként, ami a rendszer folyamatainak megtekintésekor (például az eltávolított segédprogram futtatásakor) látható. Az „xsnow”, „/usr” látható lesz a folyamatok listájában /lib/command-not-found - xsnow"). Ennek megfelelően a támadó figyelheti a futó folyamatokat (például az előrejelzett PID-szám „/proc/$pid/cmdline” előfordulásának elemzésével), és meghatározhatja az áldozat által a parancssorban megadott jelszót.

Annak érdekében, hogy a felhasználó egy fiktív sudo prompt hatására jelszót adjon meg, egy trükköt javasoltak, amelynek lényege, hogy nyomon követi a sudo segédprogram tényleges indulását a folyamatok listájában, megvárja, amíg befejeződik, és közvetlenül ezután hajtson végre támadást a „falon” keresztül. A menekülési szekvenciák manipulálásával a támadó a sudo tényleges végrehajtása után helyettesítheti az üzenetet egy hamis jelszó-újrabeviteli felszólítással. Az áldozat azt gondolhatja, hogy hibát követett el a jelszó megadásakor, és másodszor is beírja a jelszót, felfedve a jelszót a „parancs nem található” kezelő argumentumaiban.

A sikeres támadáshoz az „üzenet” módot „y”-ra kell állítani, ami alapértelmezés szerint be van állítva az Ubuntu, a Debian és a CentOS/RHEL rendszerben. A támadást az Ubuntu 22.04-ben az alapértelmezett konfigurációban mutatták be, a gnome-terminal használatával. A Debianban a támadás nehéz, mivel a „command-not-found” kezelő alapértelmezés szerint nincs engedélyezve a disztribúcióban, a CentOS/RHEL-ben pedig a támadás nem fog működni, mivel a fali segédprogram a setgid jelző nélkül van telepítve és igen. nem férhetnek hozzá mások termináljaihoz. Windows-terminál használatakor a támadás módosítható a vágólap tartalmának megváltoztatásához.

A sérülékenység 2013 óta jelen van az util-linux csomagban, miután a 2.24-es kiadás hozzáadta az üzenet megadásának lehetőségét a fali parancssorban, de elfelejtette kitisztítani az escape szekvenciákat. A sérülékenység javítását az util-linux 2.40 tegnapi kiadása tartalmazza. Figyelemre méltó, hogy amikor az util-linux 2.39 kiadásában lévő biztonsági rést próbálták kijavítani, egy másik hasonló sérülékenységet azonosítottak, amely lehetővé teszi a vezérlőkarakterek helyettesítését a területi beállítások manipulálásával.

Forrás: opennet.ru

Hozzászólás