OpenSMTPD haavatavused, mis võimaldavad kaugel ja kohapeal saada root õigusi

Qualys ettevõte tuvas veel üks kaugjuhtimisega kriitiline haavatavus (CVE-2020-8794) postiserveris OpenSMTPD, mida arendab OpenBSD projekt. Nagu jaanuari lõpus tuvastatud haavatavus, uus probleem võimaldab kaugjuhitult täita suvalisi shell-i käske serveris root-kasutaja õigustes. Haavatavus eemaldatud väljalaskes OpenSMTPD 6.6.4p1.

Probleem tuleneb veast koodis, mis teostab posti edastamist kaugpostiserverisse (mitte koodis, mis töötleb sissetulevaid ühendusi). Rünnak on võimalik nii kliendi kui serveri poolel. Kliendi poolel on rünnak võimalik OpenSMTPD vaikeseadistuses, kus OpenSMTPD aktsepteerib päringuid ainult kohaliku võrgu liideselt (localhost) ja saadab postisõnumid välistele serveritele. Haavatavuse ärakasutamiseks piisab, kui OpenSMTPD seadistab postiserveriga, mis on ründaja kontrolli all, seansi posti edastamise protsessi käigus, või kui ründaja suudab kliendi ühendusse sekkuda (MITM või ümber suunamine DNS-i või BGP rünnakute kaudu).

Serveri rünnaku korral peab OpenSMTPD olema seadistatud väliste võrgupäringute vastuvõtmiseks teistelt meiliserversidelt või toetama kolmandate osapoolte teenuseid, mis võimaldavad saata päringuid juhuslikule e-posti aadressile (näiteks aadressi kinnitamise vormid veebisaitidel). Näiteks võib ründaja ühendada OpenSMTPD-serveriga ja saata vale e-kirja (mitteeksisteerivale kasutajale), mis toob kaasa vastuse e-kirja, mis sisaldab veakoodi (bounce), saatmise ründaja serverisse. Ründaja võib kasutada haavatavust hetkel, mil OpenSMTPD ühendub, et edastada teavet ründaja serverisse. Rünnaku käigus sisestatud käsud salvestatakse faili, mis täidetakse root-õigustega OpenSMTPD taaskäivitamisel, seetõttu peab ründaja rünnaku täielikuks realiseerimiseks ootama OpenSMTPD taaskäimist või põhjustama OpenSMTPD kokkuvarisemise.

Probleem esineb mta_io() funktsioonis, mis käsitleb koodi, mis töötleb mitmerealist vastust, mille kaugserver tagastab pärast ühenduse loomist (näiteks "250-ENHANCEDSTATUSCODES" ja "250 HELP"). OpenSMTPD-s on eeldatud, et esimene rida sisaldab kolme numbrit ja teksti, eraldatud märgiga "-", ning teine rida kolme numbrit ja teksti, eraldatud tühikuga. Kui teises reas ei järgne kolmnumbri järel tühikut ja teksti, määratakse näitaja, mida kasutatakse teksti määratlemiseks, bait, mis järgneb sümbolile ‘\0’, ja proovitud on kopeerida andmepuud, mis järgivad rea lõppu.

OpenBSD projekti soovil on haavatavuse ekspluateerimise üksikasjade avaldamine edasi lükatud 26. veebruarini, et anda kasutajatele võimalus oma süsteeme uuendada. Probleem esineb koodibaasis alates 2015. aasta detsembrist, kuid koodi õigustega root'i täitmine on võimalik alates 2018. aasta maist. Uurijad on valmistanud tööprototüübi eksploidist, mis on edukalt testitud OpenSMTPD kogumites OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testimine) ja Fedora 31 jaoks.

OpenSMTPD-s on samuti tuvastatud veel üks haavatavus (CVE-2020-8793), mis võimaldab kohalikel kasutajatel lugeda süsteemi mis tahes faili esimest rida. Näiteks on võimalik näha faili /etc/master.passwd esimest rida, kus on salvestatud root-kasutaja parooli hash. Haavatavus võimaldab lugeda ka kõiki teise kasutaja faili sisu, kui see fail asub samas FS-is, kus on kataloog /var/spool/smtpd/. Probleem ei ole paljudes Linuxi distributsioonides ekspluateeritav, kus väärtus /proc/sys/fs/protected_hardlinks on seadistatud 1-ks.

Probleem on tingitud mittetäielikust kõrvaldamisest probleemide, auditi käigus, mille 2015. aastal viis läbi Qualys. Ründaja võib saavutada oma koodi täitmise rühmaga „_smtpq”, seadistades muutuja „PATH=.” ja paigutades käesolevasse katalooge skripti nimega makemap (utiliit smtpctl käivitab makemap ilma tee täpsustamiseta). Saades juurdepääsu rühmale „_smtpq”, saab ründaja seejärel tekitada võistlusolukorra (luua suur fail offline kataloogis ja saata SIGSTOP signaal) ning enne töötlemise lõpetamist asendada fail offline kataloogis kõva sümboolse lingiga, mis viitab sihtfailile, mille sisu on vaja lugeda.

Oluline on märkida, et Fedora 31-s võimaldab haavatavus koheselt omandada root-grupi õigused, kuna protsess smtpctl on varustatud setgid root lipuga, mitte setgid smtpq-ga. Saades juurdepääsu root-rühmale, saab kirjutada /var/lib/sss/mc/passwd sisu ja saada täieliku root-juurdepääsu süsteemis.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster