Откриени детали за критичната ранливост во Exim

објавено корективно ослободување Ексим 4.92.2 со елиминирање на критичните ранливости (CVE-2019-15846), што во стандардната конфигурација може да доведе до далечинско извршување на код од напаѓач со права на root. Проблемот се појавува само кога е овозможена поддршката за TLS и се експлоатира со предавање на специјално дизајниран сертификат за клиент или изменета вредност на SNI. Ранливост идентификувани од Qualys.

проблем присутни во управувачот за бегство од специјални знаци во низата (string_interpret_escape() од стрингот.в) и е предизвикан од тоа што знакот '\' на крајот од низата се толкува пред нула знакот ('\0') и бега од него. При бегство, секвенцата '\' и следниот нула код на крајот на линијата се третираат како еден знак и покажувачот се префрла на податоци надвор од линијата, кои се третираат како продолжение на линијата.

Кодот што повикува string_interpret_escape() доделува бафер за одводот врз основа на вистинската големина, а изложениот покажувач завршува во област надвор од границите на баферот. Соодветно, кога се обидуваме да обработиме влезна низа, се јавува ситуација кога се читаат податоци од област надвор од границите на доделениот бафер, а обидот да се напише низа без бегство може да доведе до пишување надвор од границите на баферот.

Во стандардната конфигурација, ранливоста може да се искористи со испраќање специјално дизајнирани податоци до SNI кога се воспоставува безбедна врска со серверот. Проблемот може да се искористи и со менување на вредностите на peerdn во конфигурациите конфигурирани за автентикација на сертификатот на клиентот или при увоз на сертификати. Нападот преку SNI и peerdn е можен почнувајќи од ослободувањето Ексим 4.80, во која функцијата string_unprinting() се користеше за отпечатување на содржината peerdn и SNI.

Подготвен е експлоат прототип за напад преку SNI, кој работи на архитектури i386 и amd64 на Linux системи со Glibc. Експлоатот користи преклопување на податоци на областа на купот, што резултира со презапишување на меморијата во која е зачувано името на датотеката за евиденција. Името на датотеката се заменува со „/../../../../../../../../etc/passwd“. Следно, променливата со адресата на испраќачот се препишува, која прво се зачувува во дневникот, што ви овозможува да додадете нов корисник во системот.

Ажурирања на пакети со поправени ранливости објавени од дистрибуции Debian, Ubuntu, Fedora, SUSE/OPENSUSE и FreeBSD. Проблем со RHEL и CentOS не се подложни, бидејќи Exim не е вклучен во нивното редовно складиште за пакети (во ЕПЕЛ обновление веќе формирана, но засега не е поставен до јавно складиште). Во Exim кодот проблемот се решава со еднослојно лепенка, што го оневозможува ефектот на бегство на обратната коса црта ако е на крајот од линијата.

Како решение за блокирање на ранливоста, можете да ја оневозможите поддршката за TLS или да додадете
ACL секција „acl_smtp_mail“:

услов за одбивање = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
услов за одбивање = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Извор: opennet.ru

Додадете коментар