Az OpenBSD biztonsági rései, amelyek lehetővé teszik a jogosultságok kiterjesztését és a hitelesítés megkerülését az smtpd, ldapd és radiusd fájlokban

Qualys Társaság kiderült négy sebezhetőségek OpenBSD-ben, amelyek közül az egyik lehetővé teszi, hogy távolról, hitelesítés nélkül kapcsolódjon egyes hálózati szolgáltatásokhoz, a másik három pedig a rendszerben való jogosultságuk növelését teszi lehetővé. A Qualys jelentés felhívta a figyelmet az OpenBSD fejlesztőinek gyors reagálására – minden probléma fennállt Eltüntetett в OpenBSD 6.5 и OpenBSD 6.6 a privát értesítést követő 40 órán belül.

A távolról kihasználható sérülékenységet a libc könyvtár hitelesítéskezelőjének hívása során fellépő hiba okozza, amely
/usr/libexec/auth/login_style program argumentumokat ad át a parancssorban. Beleértve a login_style meghívásakor az opcionális "-s service" paramétert, a protokoll nevének átadása megengedett. Ha a felhasználónév elején egy "-" karaktert használunk, akkor a rendszer ezt a nevet opcióként kezeli a login_style futtatásakor. Ennek megfelelően, ha a hitelesítés során felhasználónévként „-schallenge” vagy „-schallenge: passwd” ad meg, akkor a login_style a kérést a kezelő használatára vonatkozó kérésként fogja fel. S/Key.

A probléma az, hogy a login_style S/Key protokollt csak formálisan támogatja, de valójában figyelmen kívül hagyja a sikeres hitelesítés jelének kimenetével. Így a támadó "-schallenge" felhasználóként léphet fel, és megkerülheti a hitelesítést, és jelszó vagy kulcs megadása nélkül hozzáférhet. A probléma minden olyan hálózati szolgáltatást érinthet, amely rendszeres libc-hívásokat használ a hitelesítéshez. Például a hitelesítés megkerülésének képességét az smtpd (AUTH PLAIN), az ldapd és a radiusd erősíti meg.

A biztonsági rés nem jelentkezik az sshd-ben, mivel további védelmet nyújt a felhasználó rendszerben való jelenlétének ellenőrzésével. Az sshd azonban használható annak tesztelésére, hogy egy rendszer érzékeny-e a sérülékenységre - a "-sresponse:passwd" felhasználónév elérésekor a kapcsolat lefagy, mivel az sshd arra vár, hogy a login_passwd visszaadja a hívás paramétereit (challenge), és a login_passwd várja a hiányzó paraméterek átvitelét (a "- sresponse" név opcióként szerepel). Egy potenciális helyi támadó megpróbálhatja megkerülni a hitelesítést a su segédprogramban, de a "-sresponse" név átadása a folyamat összeomlását okozza, mivel null mutatót ad vissza a getpwnam_r("-schallenge", ...) függvény végrehajtásakor. .

Egyéb sebezhetőségek:

  • CVE-2019-19520 – Helyi jogosultságok eszkalációja az sgid jelzővel együtt érkező xlock segédprogram manipulálásával, amely a csoportot "auth"-ra változtatja. Az xlock kódban a könyvtári útvonalak újradefiniálása csak a felhasználói azonosító (setuid) megváltoztatásakor tilos, ami lehetővé teszi a támadó számára, hogy módosítsa a "LIBGL_DRIVERS_PATH" környezeti változót, és megszervezze megosztott könyvtárának betöltését, amelynek kódja végrehajtásra kerül. a privilégiumok „auth” csoporthoz való eszkalációja után.
  • CVE-2019-19522 – Lehetővé teszi az "auth" csoportban lévő helyi felhasználó számára, hogy rootként futtasson kódot, ha az S/Key vagy YubiKey hitelesítés engedélyezve van a rendszerben (alapértelmezés szerint nincs engedélyezve). A fenti xlock sebezhetőség kihasználásával elérhető "auth" csoporthoz való tagság lehetővé teszi a fájlok /etc/skey és /var/db/yubikey könyvtárakba való írását. Például egy támadó hozzáadhat egy új /etc/skey/root fájlt, hogy egyszeri kulcsokat generáljon a root hitelesítéshez az S/Key segítségével.
  • CVE-2019-19519 – Az erőforráskorlátok növelésének lehetősége a su segédprogrammal végzett manipulációk révén. A "-L" opció megadásakor, amely a hitelesítési kísérletek ciklikus megismétlését jelenti sikertelenség esetén, a felhasználói osztály csak egyszer kerül beállításra, és a következő kísérleteknél nem áll vissza. A támadó végrehajthatja a „su -l -L” parancsot, amikor valaki más bejelentkezési adatait más típusú fiókkal akarja megadni, de a második kísérletnél sikeresen hitelesítheti magát. Ebben a helyzetben a felhasználó az első próbálkozáskor megadott felhasználói osztálynak megfelelő korlátokat állít be (például a folyamatok maximális száma vagy egy folyamat memóriamérete). A módszer csak a nem privilegizált felhasználóktól való kölcsönzési korlátok esetén működik, mivel a root felhasználónak a kerékcsoportban kell lennie).

Ezenkívül meg lehet jegyezni végrehajtás Az OpenBSD-ben egy új módszer a rendszerhívások érvényességének ellenőrzésére, tovább bonyolítva a sérülékenységek kihasználását. A módszer csak akkor teszi lehetővé a rendszerhívások végrehajtását, ha azokat a korábban regisztrált memóriaterületekről érik el. A memóriaterületek megjelölésére javasolta új rendszerhívás msyscall().

Forrás: opennet.ru