Chyby zabezpečení v OpenSMTPD, které umožňují vzdálený a místní root přístup

Společnost Qualys odhaleno další vzdálená kritická chyba zabezpečení (CVE-2020-8794) na poštovním serveru OpenSMTPD, vyvinutý projektem OpenBSD. Jako ten identifikovaný na konci ledna zranitelnost, nový problém umožňuje vzdáleně spouštět libovolné příkazy shellu na serveru s uživatelskými právy root. Zranitelnost vyloučeno v vydání OpenSMTPD 6.6.4p1.

Problém je způsoben chybou v kódu, který doručuje poštu na vzdálený poštovní server (nikoli v kódu, který zpracovává příchozí připojení). Útok je možný jak na straně klienta, tak na straně serveru. Na straně klienta je útok možný ve výchozí konfiguraci OpenSMTPD, ve které OpenSMTPD přijímá požadavky pouze na interním síťovém rozhraní (localhost) a odesílá poštovní zprávy na externí servery. Ke zneužití zranitelnosti stačí, aby OpenSMTPD během doručování dopisu navázal relaci s poštovním serverem ovládaným útočníkem, nebo aby se útočník mohl vklínit do klientského spojení (MITM nebo přesměrování při útocích přes DNS nebo BGP ).

Pro útok na straně serveru musí být OpenSMTPD nakonfigurováno tak, aby přijímalo externí síťové požadavky z jiných poštovních serverů nebo obsluhovalo služby třetích stran, které vám umožňují odeslat požadavek na libovolný e-mail (například formuláře pro potvrzení adresy na webových stránkách). Útočník se například může připojit k serveru OpenSMTPD a odeslat nesprávný dopis (neexistujícímu uživateli), což povede k odeslání dopisu s chybovým kódem (bounce) na server útočníka. Útočník může tuto chybu zabezpečení zneužít, když se OpenSMTPD připojí k doručení oznámení na útočníkův server. Příkazy shellu vložené během útoku jsou umístěny v souboru, který je spouštěn s právy root při restartování OpenSMTPD, takže útočník musí počkat, až se OpenSMTPD restartuje, nebo iniciovat pád OpenSMTPD, aby útok dokončil.

Problém je přítomen ve funkci mta_io() v kódu pro analýzu víceřádkové odpovědi vrácené vzdáleným serverem po navázání připojení (například "250-ENHANCEDSTATUSCODES" a "250 HELP"). OpenSMTPD vypočítá, že první řádek obsahuje třímístné číslo a text oddělený znakem „-“ a druhý řádek obsahuje třímístné číslo a text oddělený mezerou. Pokud za trojciferným číslem nenásleduje mezera a text ve druhém řádku, ukazatel použitý k definování textu se nastaví na bajt za znakem '\0' a provede se pokus o zkopírování dat za koncem linky do vyrovnávací paměti.

Na žádost projektu OpenBSD bylo zveřejnění podrobností o zneužití zranitelnosti odloženo do 26. února, aby uživatelé mohli aktualizovat své systémy. Problém je přítomen v kódové základně od prosince 2015, ale zneužití před spuštěním kódu s právy root je možné od května 2018. Výzkumníci připravili funkční prototyp exploitu, který byl úspěšně testován v sestaveních OpenSMTPD pro OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testování) a Fedora 31.

V OpenSMTPD také identifikované Další chyba zabezpečení (CVE-2020-8793), která umožňuje místnímu uživateli číst první řádek libovolného souboru v systému. Můžete si například přečíst první řádek souboru /etc/master.passwd, který obsahuje hash hesla uživatele root. Tato chyba zabezpečení vám také umožňuje číst celý obsah souboru vlastněného jiným uživatelem, pokud je tento soubor umístěn ve stejném systému souborů jako adresář /var/spool/smtpd/. Problém není zneužitelný na mnoha distribucích Linuxu, kde je hodnota /proc/sys/fs/protected_hardlinks nastavena na 1.

Problém je důsledkem neúplné eliminace проблем, vyjádřené během auditu provedeného společností Qualys v roce 2015. Útočník může dosáhnout spuštění svého kódu s právy skupiny “_smtpq” nastavením proměnné “PATH=.”. a umístění skriptu s názvem makemap do aktuálního adresáře (obslužný program smtpctl spustí makemap bez explicitního zadání cesty). Získáním přístupu ke skupině „_smtpq“ může útočník způsobit konflikt (vytvořit velký soubor v offline adresáři a odeslat signál SIGSTOP) a před dokončením zpracování nahradit soubor v offline adresáři pevným symbolický odkaz ukazující na cílový soubor, jehož obsah je třeba přečíst.

Je pozoruhodné, že ve Fedoře 31 vám zranitelnost umožňuje okamžitě získat oprávnění kořenové skupiny, protože proces smtpctl je vybaven kořenovým příznakem setgid namísto příznaku setgid smtpq. Získáním přístupu ke kořenové skupině můžete přepsat obsah /var/lib/sss/mc/passwd a získat úplný root přístup k systému.

Zdroj: opennet.ru

Přidat komentář