Kompania Qualys një tjetër vulnerabilitet kritik të largët (CVE-2020-8794) në serverin e postës , i zhvilluar nga projekti OpenBSD. Ashtu siç u identifikua në fund të janarit , problemi i ri lejon ekzekutimin në distancë të komandave të rastësishme shell në server me të drejtat e përdoruesit root. Vulnerabiliteti në versionin .
Problemi shkaktohet nga një gabim në kodin që merret me dorëzimin e postës në një server të largët (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. Në anën e klientit, sulmi është i mundur në konfigurimin default të OpenSMTPD, ku OpenSMTPD pranon kërkesat vetëm në ndërfaqen e rrjetit lokal (localhost) dhe dërgon mesazhet në serverat e jashtëm. Për të shfrytëzuar vulnerabilitetin, mjafton që gjatë procesit të dorëzimit të një emaili OpenSMTPD të vendosë një seancë me serverin e postës që është nën kontrollin e sulmuesit, ose që sulmuesi të mund të ndërhyjë në lidhjen e klientit (MITM ose redirektim gjatë sulmeve përmes DNS ose BGP).
Për të sulmuar në anën e serverit, është e nevojshme që OpenSMTPD të jetë konfiguruar të pranojë kërkesat e rrjetit të jashtëm nga serverat e tjerë të postës ose të shërbejë shërbime të jashtme që lejojnë dërgimin e kërequests për një email të rastësishëm (p.sh., format 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ë email të pavlefshëm (për një përdorues që nuk ekziston), i cili do të shkaktojë dërgimin e një emaili përgjigje me kod gabimi (bounce) në serverin e sulmuesit. Sulmuesi mund të shfrytëzojë vulnerabilitetin në momentin kur OpenSMTPD lidhet për të dërguar një njoftim në serverin e sulmuesit. Komandat shell të futur gjatë sulmit vendosen në një skedar që ekzekutohet me të drejtat root kur OpenSMTPD ri-fillon, prandaj sulmuesi duhet të presë rithemelimin e OpenSMTPD ose të nxisë një dështim të OpenSMTPD.
Problemi ndodhet në funksionin mta_io() në kodin për analizimin e përgjigjeve shumëshkallëshe, që kthehen nga serveri i largët pas krijimit të lidhjes (p.sh., "250-ENHANCEDSTATUSCODES" dhe "250 HELP"). Në OpenSMTPD, parashikohet që rreshti i parë përfshin një numër tre-shifror dhe tekst, të ndara nga simboli "-", ndërsa rreshti i dytë një numër tre-shifror dhe tekst, të ndara nga një hapësirë. Nëse në rreshtin e dytë pas numrit tre-shifror nuk ka hapësirë dhe tekst, treguesi i përdorur për të përcaktuar tekstin vendoset në bajtin pas karakterit ‘\0’ dhe bëhet një përpjekje për të kopjuar në bufërin e të dhënave, që vijojnë pas fundit të rreshtit.
Në kërkesë të projektit OpenBSD, publikimi i detajeve rreth shfrytëzimit të dobësisë është shtyrë deri më 26 shkurt, për t'u dhënë përdoruesve mundësinë të përditësojnë sistemet e tyre. Problemi ndodhet në kodin që nga dhjetori i vitit 2015, por shfrytëzimi për ekzekutimin e kodit me të drejta root është i mundshëm që nga maji i vitit 2018. Kërkuesit kanë përgatitur një prototip funksional të shfrytëzuesit, i cili është testuar me sukses në ndërtimet OpenSMTPD për OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) dhe Fedora 31.
Në OpenSMTPD gjithashtu ka një tjetër dobësi (CVE-2020-8793), e cila i lejon një përdoruesi lokal të lexojë shtyllën e parë të çdo skedari në sistem. Për shembull, mund të lexohet shtylla e parë e /etc/master.passwd, në të cilën ndodhet hash-i i fjalëkalimit të përdoruesit root. Dobësia gjithashtu lejon leximin e të gjithë përmbajtjes së skedarit që i përket një përdoruesi tjetër, nëse ky skedar ndodhet në të njëjtën sistem datotekash me katalogun /var/spool/smtpd/. Problemi nuk është i shfrytëzueshëm në shumë distribucione Linux, në të cilat vlera /proc/sys/fs/protected_hardlinks është e vendosur në 1.
Problemi është pasojë e një eliminimi të papërshtatshëm , të përmendura gjatë auditimit të kryer nga Qualys në vitin 2015. Sulmuesi mund të arrijë të ekzekutojë kodin e tij me të drejtat e grupit "_smtpq", duke vendosur variablin "PATH=." dhe duke vendosur në katalogun aktual një skedar me emrin makemap (utilita smtpctl ekzekuton makemap pa specifikuar rrugën në mënyrë eksplicite). Duke fituar qasje në grupin "_smtpq", sulmuesi mund të shkaktojë një gjendje garuese (të krijojë një skedar të madh në katalogun offline dhe të dërgojë sinjalin SIGSTOP) dhe, deri në përfundimin e përpunimit, të zëvendësojë skedarin në katalogun offline me një lidhje simbolike të fortë që tregon në skedarin e synuar, përmbajtjen e të cilit duhet ta lexojë.
Është e rëndësishme të theksohet se në Fedora 31, vulnerabiliteti lejon menjëherë marrjen e privilegjeve të grupit root, pasi procesi smtpctl është i pajisur me flamurin setgid root, në vend të setgid smtpq. Duke fituar akses në grupin root, mund të rishkruhet përmbajtja e /var/lib/sss/mc/passwd dhe të merret plotësisht akses root në sistem.
Burimi: opennet.ru
