Dobësitë në OpenSMTPD që lejojnë qasjen rrënjësore në distancë dhe lokale

Kompania Qualys zbuluar një dobësi tjetër kritike në distancë (CVE-2020-8794) në serverin e postës OpenSMTPD, zhvilluar nga projekti OpenBSD. Si ai i identifikuar në fund të janarit cenueshmëria, një problem i ri bën të mundur ekzekutimin në distancë të komandave arbitrare të guaskës në një server me të drejta të përdoruesit rrënjë. Cenueshmëria eliminohet në çështje OpenSMTPD 6.6.4p1.

Problemi shkaktohet nga një gabim në kodin që dërgon postën në serverin e largët të postës (jo në kodin që trajton lidhjet hyrëse). Sulmi është i mundur si në anën e klientit ashtu edhe në anën e serverit. Nga ana e klientit, sulmi është i mundur në konfigurimin e paracaktuar të OpenSMTPD, në të cilin OpenSMTPD pranon kërkesa vetëm në ndërfaqen e brendshme të rrjetit (localhost) dhe dërgon mesazhe postare në serverë të jashtëm. Për të shfrytëzuar cenueshmërinë, mjafton që, gjatë dërgimit të një letre, OpenSMTPD të krijojë një seancë me një server poste të kontrolluar nga sulmuesi, ose që sulmuesi të mund të futet në lidhjen e klientit (MITM ose ridrejtim gjatë sulmeve nëpërmjet DNS ose BGP ).

Për një sulm nga ana e serverit, OpenSMTPD duhet të konfigurohet për të marrë kërkesa të jashtme të rrjetit nga serverë të tjerë të postës ose të shërbejë shërbime të palëve të treta që ju lejojnë të dërgoni një kërkesë në një email arbitrar (për shembull, formularët e konfirmimit të adresës në faqet e internetit). Për shembull, një sulmues mund të lidhet me serverin OpenSMTPD dhe të dërgojë një letër të pasaktë (për një përdorues që nuk ekziston), e cila do të çojë në një përgjigje që dërgon një letër me një kod gabimi (fryrje) në serverin e sulmuesit. Një sulmues mund të shfrytëzojë cenueshmërinë kur OpenSMTPD lidhet për të dhënë një njoftim në serverin e sulmuesit. Komandat shell të injektuara gjatë sulmit vendosen në një skedar që ekzekutohet me të drejta rrënjësore kur OpenSMTPD riniset, kështu që sulmuesi duhet të presë që OpenSMTPD të riniset ose të fillojë një përplasje të OpenSMTPD për të përfunduar sulmin.

Problemi është i pranishëm në funksionin mta_io() në kodin për analizimin e përgjigjes me shumë rreshta të kthyer nga serveri në distancë pasi të vendoset një lidhje (për shembull, "250-ENHANCEDSTATUSCODES" dhe "250 HELP"). OpenSMTPD llogarit se rreshti i parë përfshin një numër treshifror dhe tekst të ndarë me një karakter "-" dhe rreshti i dytë përmban një numër treshifror dhe tekst të ndarë me një hapësirë. Nëse një numër treshifror nuk ndiqet nga një hapësirë ​​dhe tekst në rreshtin e dytë, treguesi i përdorur për të përcaktuar tekstin vendoset në bajt që ndjek karakterin '\0' dhe bëhet një përpjekje për të kopjuar të dhënat pas fundit. të linjës në tampon.

Me kërkesë të projektit OpenBSD, publikimi i detajeve në lidhje me shfrytëzimin e cenueshmërisë është shtyrë deri më 26 shkurt për të lejuar përdoruesit të përditësojnë sistemet e tyre. Problemi ka qenë i pranishëm në bazën e kodeve që nga dhjetori 2015, por shfrytëzimi përpara ekzekutimit të kodit me privilegje rrënjësore ka qenë i mundur që nga maji 2018. Studiuesit përgatitën një prototip pune të shfrytëzimit, i cili u testua me sukses në ndërtimet OpenSMTPD për OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testim) dhe Fedora 31.

Në OpenSMTPD gjithashtu identifikuar Një tjetër dobësi (CVE-2020-8793) që lejon një përdorues lokal të lexojë rreshtin e parë të çdo skedari në sistem. Për shembull, mund të lexoni rreshtin e parë të /etc/master.passwd, i cili përmban hash-in e fjalëkalimit të përdoruesit rrënjë. Dobësia gjithashtu ju lejon të lexoni të gjithë përmbajtjen e një skedari në pronësi të një përdoruesi tjetër nëse ky skedar ndodhet në të njëjtin sistem skedarësh si drejtoria /var/spool/smtpd/. Problemi nuk është i shfrytëzueshëm në shumë shpërndarje Linux ku vlera e /proc/sys/fs/protected_hardlinks është vendosur në 1.

Problemi është pasojë e eliminimit jo të plotë problem, shprehur gjatë auditimit të kryer nga Qualys në 2015. Një sulmues mund të arrijë ekzekutimin e kodit të tij me të drejtat e grupit “_smtpq” duke vendosur variablin “PATH=”. dhe vendosja e një skripti të quajtur makemap në direktoriumin aktual (produkti smtpctl ekzekuton makemap pa specifikuar në mënyrë eksplicite shtegun). Duke fituar akses në grupin "_smtpq", sulmuesi më pas mund të shkaktojë një gjendje gare (të krijojë një skedar të madh në drejtorinë offline dhe të dërgojë një sinjal SIGSTOP) dhe, përpara se të përfundojë përpunimi, të zëvendësojë skedarin në drejtorinë offline me një hard Symlink që tregon skedarin e synuar, përmbajtja e të cilit duhet të lexohet.

Vlen të përmendet se në Fedora 31 cenueshmëria ju lejon të fitoni menjëherë privilegjet e grupit rrënjë, pasi procesi smtpctl është i pajisur me flamurin rrënjë setgid, në vend të flamurit setgid smtpq. Duke fituar akses në grupin rrënjë, mund të mbishkruash përmbajtjen e /var/lib/sss/mc/passwd dhe të fitosh akses të plotë rrënjë në sistem.

Burimi: opennet.ru

Shto një koment