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.

По просьбе проекта OpenBSD публикация деталей об эксплуатации уязвимости отложена до 26 февраля, чтобы дать пользователям возможность обновить свои системы. Проблема присутствует в кодовой базе с декабря 2015 года, но эксплуатация до выполнения кода с правами root возможна с мая 2018 года. Исследователями подготовлен рабочий прототип эксплоита, который успешно протестирован в сборках OpenSMTPD для OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) и Fedora 31.

V OpenSMTPD také identifikované ещё одна уязвимость (CVE-2020-8793), которая позволяет локальному пользователю прочитать первую строку любого файла в системе. Например, можно прочитать первую строку /etc/master.passwd, в которой размещается хэш пароля пользователя root. Уязвимость также позволяет прочитать всё содержимое файла, принадлежащего другому пользователю, если этот файл находится в одной ФС с каталогом /var/spool/smtpd/. Проблема не эксплуатируема во многих дистрибутивах Linux, в которых значение /proc/sys/fs/protected_hardlinks выставлено в 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

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster