Společnost Qualys další vzdálená kritická chyba zabezpečení (CVE-2020-8794) na poštovním serveru , vyvinutý projektem OpenBSD. Jako ten identifikovaný na konci ledna , nový problém umožňuje vzdáleně spouštět libovolné příkazy shellu na serveru s uživatelskými právy root. Zranitelnost v vydání .
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é ещё одна уязвимость (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
