nemrég biztonsági rést tártak fel a sudo segédprogramban (egyetlen program adminisztrációs jogainak megadásának megszervezésére vagy parancsok végrehajtására más felhasználók nevében)CVE-2019 18634-", ez lehetővé teszi a kiváltságok növelését a rendszeren a root felhasználó számára.
A problémát a sudo 1.7.1 verzió kiadása óta észlelték 1.8.29 verzióig, amely csak akkor lehet kihasználni, ha az / etc / sudoers fájl "pwfeedback" opcióját használja, amely alapértelmezés szerint le van tiltva, a sudo későbbi verzióiban, de egyes disztribúciókban, például a Linux Mint és az Elementary OS-ben aktiválódik.
A "pwfeedback" opció lehetővé teszi a "*" karakter megjelenítését a jelszó megadásakor minden beírt karakter után.
A getln () függvény végrehajtásának hibája miatt a tgetpass.c fájlban definiált szabványos bemeneti sorrendben (stdin), a jelszóval ellátott sor túl hosszú lehet, hogy nem fér bele a lefoglalt pufferbe, és felülírja a verem egyéb adatait. A túlcsordulás a sudo kód root jogosultságokkal történő futtatásakor következik be.
A probléma lényege az, hogy amikor használják a ^ U speciális karakter a beviteli folyamat során (sortörlés), é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ó puffer méretére, de a mutatót nem adja vissza a puffer jelenlegi eredeti értékére.
A művelet másik hozzájáruló tényezője a pwfeedback mód automatikus kikapcsolásának hiánya. amikor az adatokat nem a terminálról, hanem a bemeneti adatfolyamról kapják (ez a hiba lehetővé teszi a rögzítési hiba feltételeinek megteremtését, például olyan rendszerekben, ahol meg nem nevezett egyirányú csatornák vannak, akkor hiba lép fel, amikor megpróbáljuk felolvasni a csatorna végét).
feltéve, hogy a támadó teljes mértékben ellenőrizheti a verem adatainak felülírását, nem nehéz olyan kihasználást létrehozni, amely lehetővé teszi a root felhasználó jogosultságainak növelését.
A problémát bármely felhasználó kihasználhatja, függetlenül a sudo használatának jogaitól és a felhasználóspecifikus beállítások meglététől a sudoerekben.
A sudo jogosultságokkal rendelkező felhasználó ellenőrizheti, hogy «pwfeedback»Futtatásával engedélyezhető:
sudo -l
Igen "pwfeedback»Megjelenik az« Egyező alapértelmezett érték bejegyzések »kimenetben, a pulóverek érintettnek látszik. A következő példában a pulóverek sebezhető:
sudo -l Matching Defaults entries for “USER” on linux-build: insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail
A USER felhasználó a következő parancsokat futtathatja a linux-buildben:
(ALL: ALL) ALL
A hibáról elmagyarázzák, hogy a hibát sudo engedélyek nélkül lehet kihasználni, csak erre van szükség pwfeedback engedélyezve. A hiba úgy reprodukálható, hogy egy nagy bemenetet átad a sudo-nak egy csövön keresztül, amikor jelszót kér.
Például:
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id Password: Segmentation faultKét hiba járul hozzá ehhez a biztonsági réshez:
-
A "pwfeedback" opciót nem hagyjuk figyelmen kívül, ahogy annak lennie kell, ha nem a végberendezésről olvasunk. A terminál hiánya miatt a vonaltörlő karakter mentett változata megmarad az inicializált 0 értéken.
-
A csillagok sorát törlő kód nem írja vissza helyesen a puffer helyzetét, ha írási hiba van, de a puffer hátralévő hosszát visszaállítja. Ennek eredményeként a getln () függvény túlírhatja a puffer végét.
Végül, a problémát a sudo 1.8.31 verzióban javították, néhány órája jelent meg. Bár a disztribúciókban a sérülékenység továbbra is kijavítatlan így Az érintett disztribúciók felhasználóit kérjük meg vagy hogy észlelik, hogy a konfiguráció pwfeedback a fájlban van / etc / sudoers, frissítés a sudo új verziójára.
Azt emlegetik hogy blokkolja a problémát, a legfontosabb dolog az, hogy ellenőriznie kell, hogy a konfiguráció /pwfeedback nem bent / etc / sudoers és ha szükséges, deaktiválni kell.
forrás: https://www.openwall.com