Podjetje Qualys
Težavo povzroča napaka v kodi, ki dostavlja pošto oddaljenemu poštnemu strežniku (ne v kodi, ki obravnava dohodne povezave). Napad je možen tako na strani odjemalca kot na strani strežnika. Na strani odjemalca je napad možen v privzeti konfiguraciji OpenSMTPD, v kateri OpenSMTPD sprejema zahteve samo na notranjem omrežnem vmesniku (localhost) in pošilja poštna sporočila zunanjim strežnikom. Za izkoriščanje ranljivosti je dovolj, da med dostavo pisma OpenSMTPD vzpostavi sejo s poštnim strežnikom, ki ga nadzoruje napadalec, ali da se lahko napadalec zagozdi v odjemalsko povezavo (MITM ali preusmeritev med napadi prek DNS ali BGP). ).
Za napad na strani strežnika mora biti OpenSMTPD konfiguriran za prejemanje zunanjih omrežnih zahtev od drugih poštnih strežnikov ali storitev tretjih oseb, ki vam omogočajo pošiljanje zahteve na poljubno e-pošto (na primer obrazci za potrditev naslova na spletnih mestih). Napadalec se lahko na primer poveže s strežnikom OpenSMTPD in pošlje napačno pismo (neobstoječemu uporabniku), kar bo privedlo do pošiljanja pisma s kodo napake (bounce) na napadalčev strežnik. Napadalec lahko izkoristi ranljivost, ko se OpenSMTPD poveže, da pošlje obvestilo napadalčevemu strežniku. Ukazi lupine, vstavljeni med napadom, so postavljeni v datoteko, ki se izvede s korenskimi pravicami, ko se OpenSMTPD znova zažene, tako da mora napadalec počakati, da se OpenSMTPD znova zažene, ali sproži zrušitev OpenSMTPD, da dokonča napad.
Težava je prisotna v funkciji mta_io() v kodi za razčlenjevanje večvrstičnega odgovora, ki ga vrne oddaljeni strežnik po vzpostavitvi povezave (na primer "250-ENHANCEDSTATUSCODES" in "250 HELP"). OpenSMTPD izračuna, da prva vrstica vključuje trimestno številko in besedilo, ločeno z znakom »-«, druga vrstica pa vsebuje trimestno število in besedilo, ločeno s presledkom. Če trimestnemu številu ne sledita presledek in besedilo v drugi vrstici, se kazalec, ki se uporablja za definiranje besedila, nastavi na bajt, ki sledi znaku '\0', in poskuša se kopirati podatek, ki sledi koncu vrstice v medpomnilnik.
Na zahtevo projekta OpenBSD je bila objava podrobnosti o izkoriščanju ranljivosti odložena do 26. februarja, da bi lahko uporabniki posodobili svoje sisteme. Težava je v kodni bazi prisotna od decembra 2015, vendar je izkoriščanje pred izvajanjem kode s korenskimi pravicami možno od maja 2018. Raziskovalci so pripravili delujoč prototip izkoriščanja, ki je bil uspešno testiran v različicah OpenSMTPD za OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testiranje) in Fedora 31.
Tudi v OpenSMTPD
Težava je posledica nepopolne eliminacije
Omeniti velja, da vam v Fedori 31 ranljivost omogoča, da takoj pridobite privilegije korenske skupine, saj je proces smtpctl opremljen s korensko zastavo setgid namesto zastavice setgid smtpq. Če pridobite dostop do korenske skupine, lahko prepišete vsebino /var/lib/sss/mc/passwd in pridobite popoln korenski dostop do sistema.
Vir: opennet.ru