A segédprogramban , a parancsok végrehajtásának megszervezésére szolgál más felhasználók nevében, sebezhetőség (), amely lehetővé teszi a jogosultságok root felhasználóra való kiterjesztését. A probléma a sudo 1.7.1 óta csak a /etc/sudoers fájlban található "pwfeedback" opció használatakor jelentkezik, amely alapértelmezés szerint le van tiltva, de egyes disztribúciókban engedélyezve van, például a Linux Mint és Elementary OS. A problémát a kiadásban javítottuk. , néhány órája jelent meg. A sebezhetőség továbbra sem javított a disztribúciókban.
A „pwfeedback” opció engedélyezi a „*” szimbólum megjelenítését minden beírt karakter után a jelszó beírásakor. A következő miatt: A tgetpass.c fájlban definiált getln() függvény implementációjában előfordulhat, hogy egy túlméretezett jelszó karakterlánc, amelyet a szabványos bemeneti adatfolyamon (stdin) keresztül adnak át, bizonyos feltételek mellett nem fér bele a lefoglalt pufferbe, és felülírja a veremben lévő többi adatot. A túlcsordulás akkor fordul elő, amikor a sudo kódot root jogosultságokkal futtatjuk.
A probléma lényege, hogy a ^U speciális karakter (sor törlése) használatakor a bemeneti folyamat során, és ha az írási művelet sikertelen, a kimeneti karakterek ("*") törléséért felelős kód visszaállítja az adatokat a rendelkezésre álló pufferméretre, de nem állítja vissza a mutatót a puffer aktuális pozíciójára az eredeti értékére. A kihasználáshoz hozzájáruló másik tényező a "pwfeedback" mód automatikus letiltásának hiánya, amikor az adatokat nem a terminálról, hanem a bemeneti adatfolyamon keresztül fogadják (ez a hiba lehetővé teszi az írási hiba előfordulásának feltételeinek megteremtését, például egyirányú rendszereken). A hiba akkor jelentkezik, amikor az olvasási csatorna vége után próbálunk írni).
Mivel a támadó teljes mértékben ellenőrzi a veremben lévő adatok felülírását, könnyen létrehozhat egy olyan kihasználási módszert, amely root jogosultságokat szerez. Ezt a problémát bármely felhasználó kihasználhatja, függetlenül a sudo jogosultságoktól vagy a sudoers felhasználóspecifikus beállításaitól. A probléma megelőzése érdekében győződjön meg arról, hogy a "pwfeedback" beállítás nincs jelen az /etc/sudoers fájlban, és ha szükséges, tiltsa le ("Defaults !pwfeedback"). A probléma teszteléséhez futtassa a következő kódot:
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S azonosító
Jelszó: Szegmentációs hiba
Forrás: opennet.ru
