Spoločnosť Qualys
Problém je spôsobený chybou v kóde, ktorý doručuje poštu na vzdialený poštový server (nie v kóde, ktorý spracováva prichádzajúce pripojenia). Útok je možný na strane klienta aj na strane servera. Na strane klienta je útok možný v predvolenej konfigurácii OpenSMTPD, v ktorej OpenSMTPD prijíma požiadavky iba na internom sieťovom rozhraní (localhost) a posiela mailové správy na externé servery. Na zneužitie zraniteľnosti stačí, aby OpenSMTPD pri doručovaní listu nadviazal reláciu s poštovým serverom kontrolovaným útočníkom, alebo aby sa útočník mohol vkliesniť do klientskeho spojenia (MITM alebo presmerovanie pri útokoch cez DNS alebo BGP ).
V prípade útoku na strane servera musí byť OpenSMTPD nakonfigurovaný tak, aby prijímal externé sieťové požiadavky z iných poštových serverov alebo obsluhoval služby tretích strán, ktoré vám umožňujú odoslať požiadavku na ľubovoľný e-mail (napríklad formuláre na potvrdenie adresy na webových stránkach). Útočník sa môže napríklad pripojiť k serveru OpenSMTPD a odoslať nesprávny list (neexistujúcemu používateľovi), čo povedie k odoslaniu listu s chybovým kódom (odskok) na server útočníka. Útočník môže zneužiť túto zraniteľnosť, keď sa OpenSMTPD pripojí na doručenie upozornenia na útočníkov server. Príkazy shellu vložené počas útoku sú umiestnené v súbore, ktorý sa vykoná s právami root pri reštarte OpenSMTPD, takže útočník musí počkať, kým sa OpenSMTPD reštartuje alebo iniciovať pád OpenSMTPD, aby dokončil útok.
Problém je prítomný vo funkcii mta_io() v kóde na analýzu viacriadkovej odpovede vrátenej vzdialeným serverom po vytvorení pripojenia (napríklad "250-ENHANCEDSTATUSCODES" a "250 HELP"). OpenSMTPD vypočíta, že prvý riadok obsahuje trojmiestne číslo a text oddelené znakom „-“ a druhý riadok obsahuje trojmiestne číslo a text oddelené medzerou. Ak za trojciferným číslom nenasleduje medzera a text v druhom riadku, ukazovateľ použitý na definovanie textu sa nastaví na bajt za znakom „\0“ a vykoná sa pokus o skopírovanie údajov za koncom riadku do vyrovnávacej pamäte.
Na žiadosť projektu OpenBSD bolo zverejnenie podrobností o zneužití zraniteľnosti odložené do 26. februára, aby používatelia mohli aktualizovať svoje systémy. Problém je prítomný v kódovej základni od decembra 2015, ale zneužitie pred spustením kódu s oprávneniami root je možné od mája 2018. Výskumníci pripravili funkčný prototyp exploitu, ktorý bol úspešne testovaný v zostavách OpenSMTPD pre OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testovanie) a Fedora 31.
Aj v OpenSMTPD
Problém je dôsledkom neúplnej eliminácie
Je pozoruhodné, že vo Fedore 31 vám zraniteľnosť umožňuje okamžite získať privilégiá koreňovej skupiny, pretože proces smtpctl je vybavený príznakom setgid root namiesto príznaku setgid smtpq. Získaním prístupu do koreňovej skupiny môžete prepísať obsah /var/lib/sss/mc/passwd a získať úplný root prístup do systému.
Zdroj: opennet.ru