OpenSMTPD haavatavused, mis võimaldavad kaug- ja kohalike root-õiguste saamist

Qualys ettevõte tuvastas veel removeeritud kriitiline haavatavus (CVE-2020-8794) meiliserveris OpenSMTPD, mida arendab OpenBSD projekt. Nagu ka jaanuari lõpus tuvastatud haavatavus, uus probleem võimaldab kaugelt täita juhuslikke shell-käsklusi serveris root-kasutaja õigustes. Haavatavus on kõrvaldatud väljaandes OpenSMTPD 6.6.4p1.

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 tuvastatud 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 probleemideaudiidi 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

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster