Në serverin e postës Exim kritik (), 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 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Ă« 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 . 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 , , . dhe ofrojnë versionin 4.92, në të cilin problemi nuk shfaqet. RHEL dhe CentOS nuk janë , pasi Exim nuk është pjesë e repertorëve të tyre standard të paketave.
Burimi: opennet.ru
