Qualys ettevõte
Probleemi põhjustab viga koodis, mis edastab kirjad kaugpostiserverisse (mitte sissetulevaid ühendusi haldavas koodis). Rünnak on võimalik nii kliendi kui ka serveri poolel. Kliendi poolelt on rünnak võimalik OpenSMTPD vaikekonfiguratsioonis, kus OpenSMTPD võtab päringuid vastu ainult sisemisel võrguliidesel (localhost) ja saadab meilisõnumeid välistele serveritele. Haavatavuse ärakasutamiseks piisab, kui OpenSMTPD loob kirja kohaletoimetamise ajal seansi ründaja juhitava meiliserveriga või saab ründaja kiiluda kliendiühendusse (MITM või DNS-i või BGP-i kaudu rünnakute ajal ümbersuunamine ).
Serveripoolse rünnaku jaoks peab OpenSMTPD olema konfigureeritud vastu võtma välisvõrgu päringuid teistelt meiliserveritelt või teenindama kolmanda osapoole teenuseid, mis võimaldavad saata päringu suvalisele meilile (näiteks aadressi kinnitusvormid veebisaitidel). Näiteks võib ründaja luua ühenduse OpenSMTPD serveriga ja saata vale kirja (olematule kasutajale), mis viib vastuseni, mis saadab ründaja serverisse veakoodiga kirja (bounce). Ründaja saab haavatavust ära kasutada, kui OpenSMTPD loob ühenduse, et edastada teade ründaja serverisse. Rünnaku ajal sisestatud shellikäsud paigutatakse faili, mis käivitatakse OpenSMTPD taaskäivitamisel juurõigustega, seega peab ründaja ootama OpenSMTPD taaskäivitamist või algatama OpenSMTPD krahhi, et rünnak lõpule viia.
Probleem esineb funktsioonis mta_io() kaugserveri poolt pärast ühenduse loomist tagastatud mitmerealise vastuse sõelumise koodis (näiteks "250-ENHANCEDSTATUSCODES" ja "250 HELP"). OpenSMTPD arvutab, et esimene rida sisaldab kolmekohalist numbrit ja teksti, mis on eraldatud märgiga "-" ning teine rida sisaldab kolmekohalist numbrit ja tühikuga eraldatud teksti. Kui kolmekohalisele numbrile ei järgne teisel real tühikut ja teksti, seatakse teksti määratlemiseks kasutatav kursor märgile \0 järgnev bait ja lõpus olevad andmed üritatakse kopeerida. liinist puhvrisse.
OpenBSD projekti nõudmisel lükati haavatavuse ärakasutamise üksikasjade avaldamine edasi 26. veebruarini, et kasutajad saaksid oma süsteeme värskendada. Probleem on koodibaasis esinenud alates 2015. aasta detsembrist, kuid enne koodi käivitamist juurõigustega kasutamine on olnud võimalik alates 2018. aasta maist. Teadlased valmistasid ette ärakasutamise toimiva prototüübi, mida testiti edukalt OpenSMTPD versioonides OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testimine) ja Fedora 31 jaoks.
Ka OpenSMTPD-s
Probleem on mittetäieliku kõrvaldamise tagajärg
Tähelepanuväärne on see, et Fedora 31-s võimaldab haavatavus kohe omandada juurrühma õigused, kuna smtpctl protsess on varustatud setgid smtpq lipu asemel setgid juurlipuga. Juurrühmale juurdepääsu saades saate faili /var/lib/sss/mc/passwd sisu üle kirjutada ja saada süsteemile täieliku juurjuurdepääsu.
Allikas: opennet.ru