коригираща версия с отстраняване на критична (), която в конфигурацията по подразбиране може да доведе до отдалечено изпълнение на код от злонамерен потребител с права root. Проблемът се проявява само при включена поддръжка на TLS и се експлоатира чрез предаване на специално оформен клиентски сертификат или модифицирано значение в SNI. Уязвимост от компанията Qualys.
Проблема в обработчика на екраниращи специални символи в стринга ( от string.c) и е предизвикана от факта, че символът '\' в края на стринга се интерпретира преди нулевия символ ('\0') и го екранира. При екранирането, последователността '\' и следващият нулев код на края на стринга се обработват като един символ и указателят се премества на данните извън границите на стринга, които се обработват като нейно продължение.
Кодът, който извиква string_interpret_escape(), заделя буфер под стоката, ръководейки се от фактическия размер, и зададеният указател се оказва в област извън границите на буфера. Съответно, при опит за обработка на входния стринг възниква ситуация на четене на данни от област извън границите на заделения буфер, а опитът за запис на разекрания стринг може да доведе до запис извън буфера.
В конфигурацията по подразбиране уязвимостта може да бъде експлоатирана чрез предаване на специално оформени данни в SNI при установяване на защитена връзка с сървъра. Проблемът може също да бъде експлоатиран чрез модификация на стойностите peerdn в конфигурации, настроени за аутентификация по клиентски сертификат или при импортиране на сертификати. Атаката чрез SNI и peerdn е възможна от версия , в която функцията string_unprinting() е била приложена за разекраниране на съдържанието на peerdn и SNI.
За атака чрез SNI е подготвен прототип на експлоит, работещ на архитектури i386 и amd64 в Linux системи с Glibc. В експлоита се използва наложение на данни върху областта на купчината, което води до презапис на паметта, в която се съхранява името на файла с логовете. Името на файла се заменя с "\/..\/..\/..\/..\/..\/..\/..\/..\/etc\/passwd". След това се презаписва променливата с адреса на изпращача, който първо се запазва в лог, което позволява добавянето на нов потребител в системата.
Актуализации на пакети с отстраняване на уязвимостта са публикувани от дистрибуциите , , , и . 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
