Společnost Qualys
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é
Problém je důsledkem neúplné eliminace
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