OpenSMTPD haavatavused, mis võimaldavad kaug- ja kohalikku juurjuurdepääsu

Qualys ettevõte paljastatud veel üks kriitiline kaughaavatavus (CVE-2020-8794) meiliserveris Ava SMTPD, mille töötas välja OpenBSD projekt. Nagu jaanuari lõpus tuvastatu haavatavus, võimaldab uus probleem suvaliste shellikäskude kaugjuhtimise juurkasutaja õigustega serveris. Haavatavus kõrvaldatud väljaandes OpenSMTPD 6.6.4p1.

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 tuvastatud Teine haavatavus (CVE-2020-8793), mis võimaldab kohalikul kasutajal lugeda süsteemi mis tahes faili esimest rida. Näiteks saate lugeda faili /etc/master.passwd esimest rida, mis sisaldab juurkasutaja parooli räsi. Haavatavus võimaldab lugeda ka teisele kasutajale kuuluva faili kogu sisu, kui see fail asub kataloogiga /var/spool/smtpd/ samas failisüsteemis. Probleemi ei saa kasutada paljudes Linuxi distributsioonides, kus /proc/sys/fs/protected_hardlinks väärtuseks on seatud 1.

Probleem on mittetäieliku kõrvaldamise tagajärg probleeme2015. aastal Qualyse läbiviidud auditi käigus. Ründaja saab oma koodi käivitada grupi “_smtpq” õigustega, määrates muutuja “PATH=”. ja skripti nimega makemap paigutamine praegusesse kataloogi (utiliit smtpctl käivitab makemapi ilma teed selgesõnaliselt määramata). Saades juurdepääsu grupile "_smtpq", võib ründaja põhjustada võiduseisundi (luua võrguühenduseta kataloogis suure faili ja saata SIGSTOP-signaali) ja enne töötlemise lõpetamist asendada võrguühenduseta kataloogis olev fail kõva failiga. sümlink, mis osutab sihtfailile, mille sisu tuleb lugeda.

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

Lisa kommentaar