Rreziku kritik në Exim, i cili lejon ekzekutimin e kodit në server me të drejta root

Në serverin e postës Exim u zbulua kritik vulnerabiliteti (CVE-2019-10149), e cila mund të çojë në ekzekutimin e kodit në distancë në server me të drejta root gjatë përpunimit të një kërkese të formatuar veçmas. Mundësia e shfrytëzimit të problemit është vërejtur në versionet nga 4.87 deri në 4.91 përfshirë ose kur ndërtohet me opsionin EXPERIMENTAL_EVENT.

Në konfigurimin e paracaktuar, sulmi mund të kryhet pa probleme të mëtejshme nga një përdorues lokal, pasi aplikohet ACL «verify = recipient», e cila bën kontrolle të tjera për adresat jashtme. Kryerja e një sulmi në distancë është e mundur nëse ndryshohen cilësimet, për shembull, kur funksionon si MX i dytë për një domain tjetër, është hequr ACL «verify = recipient» ose ka ndryshime të caktuara në local_part_suffix). Një sulm në distancë është gjithashtu i mundur nëse sulmuesi mund të mbajë lidhjen me serverin të hapur për 7 ditë (për shembull, duke dërguar një bajt në minutë për të anashkaluar ndalimin për shkak të kohës). Në këtë rast, nuk përjashtohet që të ekzistojnë edhe vektorë më të thjeshtë sulmi për shfrytëzimin e problemit në distancë.

Rrezikimi shkaktohet nga një kontroll i papërshtatshëm i adresës së marrësit në funksionin deliver_message(), i përcaktuar në skedarin /src/deliver.c. Nëpërmjet manipulimit të formatimit të adresës, sulmuesi mund të arrijë që të fusë të dhënat e tij në argumentet e komandës, e cila thirret përmes funksionit execv() me të drejta root. Për shfrytëzimin e tij nuk kërkohet përdorimi i teknikave të komplikuara, të përdorura gjatë mbushjes së buffers ose dëmtimit të memories, mjafton thjesht zëvendësimi i simboleve.

Problemi lidhet me përdorimin e konstrukcioneve për transformimin e adresave:

deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", new->address));

Funksioni expand_string() është një kombinator i komplikuar, duke përfshirë njohjen e komandës "${run{komanda argumentet}", që çon në ekzekutimin e një procesori të jashtëm. Në këtë mënyrë, për një sulm gjatë seancës SMTP, një përdorues lokal mjafton të dërgojë një komandë të tillë si ‘RCPT TO "username+${run{…}}@localhost"‘, ku localhost është një nga hostet në listën local_domains, dhe username është emri i një përdoruesi lokal të ekzistueshëm.

Nëse serveri funksionon si një rėlë postash, është e mjaftueshme të dërgoni komandën 'RCPT TO «${run{…}}@relaydomain.com»', ku relaydomain.com është një nga hostet e listuara në seksionin e konfigurimeve relay_to_domains. Duke qenë se me default në exim nuk aplikohet rekuza për heqjen e privilegjeve (deliver_drop_privilege = false), komandat e dërguara përmes «${run{…}}» do të ekzekutohen me të drejtat e root.

Është e rëndësishme të theksohet se vulnerabiliteti ishte është eliminuar në publikimin e shkurtit 4.92 pa theksuar se rregullimi mund të çojë në probleme me sigurinë. Nuk ka arsye për të supozuar se kishte një fshehje të vetëdijshme të vulnerabilitetit nga zhvilluesit e Exim, pasi problemi u zgjidh gjatë rregullimit dështimit që ndodhte gjatë transmetimit të adresave të papërshtatshme, dhe vulnerabiliteti u identifikua nga kompania Qualys gjatë auditimit të ndryshimeve në Exim.

Rregullimi për versionet e mëparshme, të cilat vazhdojnë të përdoren në distribuim, tashmë është në dispozicion vetëm në formën e patch-it. Publikimet korrigjuese për degët e mëparshme me zgjidhjen e problemit janë planifikuar për 11 qershor. Përditësimet e paketave janë përgatitur për Debian, Ubuntu, openSUSE. Arch Linux dhe Fedora ofrojnë versionin 4.92, në të cilin problemi nuk shfaqet. RHEL dhe CentOS nuk janë të ndjeshëm ndaj problemit, pasi Exim nuk është pjesë e repertorëve të tyre standard të paketave.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster