Zranitelnosti v OpenBSD umožňující zvýšení oprávnění a obcházení autentifikace v smtpd, ldapd a radiusd

Společnost Qualys odhalila čtyři zranitelnosti v OpenBSD, z nichž jedna umožňuje vzdálený přístup bez autentifikace k některým síťovým službám, zatímco další tři zvyšují oprávnění v systému. V reportu Qualys byla zmíněna rychlá reakce vývojářů OpenBSD – všechny problémy byly odstraněny v OpenBSD 6.5 a OpenBSD 6.6 během 40 hodin po soukromém oznámení.

Vzdáleně zneužitelná zranitelnost je způsobena chybou v organizaci volání ověřovacího zpracovatele v knihovně libc, která vyvolává
program /usr/libexec/auth/login_style s předáváním argumentů v příkazovém řádku. Při vyvolání login_style pomocí volitelného parametru «-s service» je také možné předat název protokolu. Pokud je na začátku uživatelského jména použit symbol «-«, toto jméno bude zpracováno jako volba při spuštění login_style. Pokud tedy při autentizaci zadáte uživatelské jméno «-schallenge» nebo «-schallenge:passwd», login_style toto vyhodnotí jako žádost o použití zpracovatele S/Key.

Problém spočívá v tom, že protokol S/Key v login_style je podporován pouze formálně, ve skutečnosti je ignorován s výstupem indikátoru úspěšné autentifikace. Útočník se tak může, předstírající uživatele «-schallenge», vyhnout autentifikaci a získat přístup bez zadání hesla nebo klíčů. Potenciálně jsou této problematice vystaveny všechny síťové služby využívající standardní volání libc pro provádění autentifikace. Například byla potvrzena možnost obcházení autentifikace ve smtpd (AUTH PLAIN), ldapd a radiusd.

Ve službě sshd se zranitelnost neprojevuje, protože obsahuje dodatečnou ochranu ověřující přítomnost uživatele v systému. Nicméně, sshd lze použít k ověření zranitelnosti systému — při použití uživatelského jména „-sresponse:passwd“ se připojení zasekne, protože sshd čeká na návrat parametru od login_passwd (challenge), zatímco login_passwd čeká na zaslání chybějících parametrů (jméno „-sresponse“ je považováno za volbu). Potenciální místní útočník se může pokusit obejít autentizaci v nástroji su, ale zaslání jména „-sresponse“ způsobí pád procesu kvůli návratu nulového ukazatele při vykonávání funkce getpwnam_r(„-schallenge“, …).

Další zranitelnosti:

  • CVE-2019-19520 — lokální zvýšení oprávnění prostřednictvím manipulace s nástrojem xlock, dodávaným s flagem sgid, který mění skupinu na „auth“. V kódu xlock je přepisování cest k knihovnám povoleno pouze při změně uživatelského ID (setuid), což útočníkovi umožňuje změnit proměnnou prostředí „LIBGL_DRIVERS_PATH“ a načíst svoji sdílenou knihovnu, jejíž kód bude vykonán po zvýšení oprávnění na skupinu „auth“.
  • CVE-2019-19522 — umožňuje místnímu uživateli, který je ve skupině „auth“, spustit kód s právy root při aktivaci autentifikace v systému prostřednictvím S/Key nebo YubiKey (standardně nejsou aktivovány). Vstup do skupiny „auth“, ke které lze získat přístup prostřednictvím zneužití výše uvedené zranitelnosti v xlock, umožňuje zapisovat soubory do adresářů /etc/skey a /var/db/yubikey. Například útočník může přidat nový soubor /etc/skey/root pro generování jednorázových klíčů pro autentifikaci pod uživatelským jménem root prostřednictvím S/Key.
  • CVE-2019-19519 — možnost zvýšení limitů na zdroje pomocí manipulace s utilitou su. Při zadání možnosti „-L“, což předpokládá cyklické opakování pokusů o autentizaci v případě neúspěchu, je třída uživatele nastavena pouze jednou a není resetována při dalších pokusech. Útočník může provést „su -l -L“ a při prvním pokusu zadat cizí přihlašovací jméno s jinou třídou účtu, ale při druhém pokusu se úspěšně autentizovat jako sám. V této situaci budou uživateli nastaveny limity odpovídající třídě uživatele uvedené při prvním pokusu (například maximální počet procesů nebo velikost paměti pro proces). Metoda funguje pouze pro přebírání limitů od neprivilegovaných uživatelů, protože pro uživatele root je nutná přítomnost ve skupině wheel.

Dále lze poznamenat realizaci v OpenBSD nové metody kontroly způsobilosti volání systémových funkcí, která dále ztěžuje zneužívání zranitelností. Metoda umožňuje vykonávat systémové volání pouze v případě, že jsou volána z předem registrovaných oblastí paměti. Pro označení oblastí paměti byla navržena nová systémová funkce msyscall().

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster