Qualys ettevÔte veel removeeritud kriitiline haavatavus (CVE-2020-8794) meiliserveris , mida arendab OpenBSD projekt. Nagu ka jaanuari lÔpus tuvastatud , uus probleem vÔimaldab kaugelt tÀita juhuslikke shell-kÀsklusi serveris root-kasutaja Ôigustes. Haavatavus vÀljaandes .
Probleem tuleneb veast koodis, mis teostab e-kirjade edastamist kaugmele serverisse (mitte koodist, mis tegeleb sissetulekutega). RĂŒnnak on vĂ”imalik nii kliendi kui ka serveri poolel. Kliendi poolel on rĂŒnnak vĂ”imalik OpenSMTPD vaikekonfiguratsioonis, kus OpenSMTPD aktsepteerib pĂ€ringuid ainult sisemiselt (localhost) ja saadab e-kirju vĂ€listele serveritele. Haavatavuse kasutamiseks piisab, kui OpenSMTPD e-kirjade edastamise protsessi kĂ€igus seab ĂŒhenduse rĂŒnnataja kontrollitava meiliserveriga vĂ”i et rĂŒndaja saaks sekkuda kliendi ĂŒhendusse (MITM vĂ”i suunamine DNS vĂ”i BGP rĂŒnnakute kĂ€igus).
Serveri poolel rĂŒnnaku jaoks peab OpenSMTPD olema seadistatud vastama vĂ€listele tootmisserverite pĂ€ringutele vĂ”i teenindama kolmandate osapoolte teenuseid, mis vĂ”imaldavad saata pĂ€ringuid juhuslikule e-posti aadressile (nĂ€iteks aadressi kinnitamise vormid veebilehtedel). NĂ€iteks rĂŒndaja vĂ”ib ĂŒhenduda OpenSMTPD serveriga ja saata vale e-kirja (mitteeksisteerivale kasutajale), mis toob kaasa vastuse e-kirja, millel on veakood (bounce) rĂŒndaja serverisse. RĂŒndaja vĂ”ib kĂŒlastada haavatavust hetkel, kui OpenSMTPD ĂŒhendab rĂŒndaja serverile teate edastamise jaoks. RĂŒnnaku kĂ€igus sisestatud shell-kĂ€sklused salvestatakse faili, mis kĂ€ivitatakse root-privillegidega, kui OpenSMTPD taaskĂ€ivitub, seetĂ”ttu peab rĂŒndaja rĂŒnnaku teostamiseks ootama OpenSMTPD taaskĂ€ivitamist vĂ”i algatama OpenSMTPD kokkuvarisemise.
Probleem esindab funktsioonis mta_io() koodis, mis kĂ€sitleb mitmerealist vastust, mille eemalt serverilt saadab pĂ€rast ĂŒhenduse loomist (nĂ€iteks "250-ENHANCEDSTATUSCODES" ja "250 HELP"). OpenSMTPD-s eeldatakse, et esimeses reas on kolm numbrit ja tekst, mis on eraldatud sĂŒmboliga "-", ning teises reas kolme numbriga tekst, mis on eraldatud tĂŒhikuga. Kui teises reas kolmest numbrist ei jĂ€rgne tĂŒhik ja tekst, siis nĂ€itaja, mida kasutatakse tekstiks mÀÀramiseks, seatakse bajtiks, mis jĂ€rgneb sĂŒmbolile â\0â, ja tehakse katse kopeerida andmepuud, mis jĂ€rgivad rea lĂ”ppu.
OpenBSD projekti palvel on haavatavuse ekspluateerimise ĂŒksikasjade avaldamine edasi lĂŒkatud kuni 26. veebruarini, et anda kasutajatele vĂ”imalus sĂŒsteeme uuendada. Probleem on olemas koodibaasis alates detsembrist 2015, kuid koodi tĂ€itmine root Ă”igustes on vĂ”imalik alates maist 2018. Uurijad on valmistanud tööprototĂŒĂŒbi, mis on edukalt testitud OpenSMTPD kogudes OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testimine) ja Fedora 31.
OpenSMTPD-s on samuti veel ĂŒks haavatavus (CVE-2020-8793), mis vĂ”imaldab kohalikul kasutajal lugeda mistahes faili esimest rida sĂŒsteemis. NĂ€iteks saab lugeda faili /etc/master.passwd esimest rida, kus on salajase root kasutaja paroolihash. Haavatavus vĂ”imaldab ka lugeda kĂ”iki sisu failidest, mis kuuluvad muule kasutajale, kui see fail asub ĂŒhes failisĂŒsteemis kaustaga /var/spool/smtpd/. Probleem ei ole paljudes Linuxi jaotustes ekspluateeritav, kus vÀÀrtus /proc/sys/fs/protected_hardlinks on seatud 1-ks.
Probleem on osaliselt audiidi kĂ€igus, mille viis lĂ€bi Qualys 2015. aastal. RĂŒndaja vĂ”ib saavutada oma koodi kĂ€ivitamise grupi "_smtpq" Ă”igustes, seades muutuja "PATH=." ja paigutades praegusesse katalooge skripti nimega makemap (smtpctl utiliit kĂ€ivitab makemap ilma selget teed mÀÀramata). Saades juurdepÀÀsu grupile "_smtpq", saab rĂŒndaja seejĂ€rel vallandada vĂ”idusĂ”idurea (luua suur fail offline kataloogis ja saata SIGSTOP signaali) ning enne töötlemise lĂ”petamist asendada faili offline kataloogis kĂ”va sĂŒmboolse lingiga, mis viitab sihtfailile, mille sisu tuleb lugeda.
Oluline tĂ€helepanek on see, et Fedora 31-s vĂ”imaldab haavatavus kohe saada root-grupi Ă”igusi, kuna protsess smtpctl on varustatud setgid root-flaagiga, mitte setgid smtpq-flaagiga. PĂ€rast root-grupi pÀÀsu saamist on vĂ”imalik kirjutada ĂŒle sisu /var/lib/sss/mc/passwd ja saada tĂ€ielik root-pÀÀs sĂŒsteemile.
Allikas: opennet.ru
