The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Новая версия почтового сервера Exim 4.88 с устранением уязвимостей

25.12.2016 21:28

Представлен релиз почтового сервера Exim 4.88, в который внесены накопившиеся исправления, добавлены новые возможности и устранены опасные уязвимости. В соответствии с февральским автоматизированным опросом более двух миллионов почтовых серверов, доля Exim составляет 55.49% (год назад 54.15%), Postfix используется на 33.06% (32.63%) почтовых серверов, Sendmail - 5.42% (6.18%), Microsoft Exchange - 1.24% (1.83%).

В Exim 4.88, а также в корректирующем обновлении Exim 4.87.1, устранена опасная уязвимость (CVE-2016-9963), которая может привести к утечке закрытого ключа DKIM. Проблема проявляется только в системах, в которых включено формирование цифровых подписей DKIM, а для доставки используются протоколы LMTP или PRDR. В такой конфигурации возможно создание ситуаций, при которых закрытый ключ будет отображён в логах. Если на почтовом сервере включена экспериментальная опция "DSN_INFO" (EXPERIMENTAL_DSN_INFO=yes), то закрытый ключ может появиться и в отправляемых во вне сообщениях DSN.

В новом выпуске также устранена потенциальная уязвимость, которая позволяет через выполнение действий под идентификатором пользователя почтового сервера Exim, получить доступ в root shell через манипуляцию с символическими ссылками в директории со спулом сообщений. Для экспериментов доступен прототип эксплоита.

Не связанные с уязвимостями изменения:

  • Добавлена опция perl_taintmode, позволяющая запустить встроенный интерпретатор perl в режиме taint, в котором применяются дополнительные проверки безопасности;
  • Добавлен новый транспорт queuefile (EXPERIMENTAL_QUEUEFILE), который может применяться для передачи копий файлов из спула сообщений для проверки во внешних почтовых сканерах;
  • Добавлена поддержка режима быстрого открытия TCP-соединений (TFO - TCP Fast Open, RFC 7413), который позволяет сократить число шагов установки соединения за счёт комбинирования в один запрос первого и второго шагов классического 3-этапного процесса согласования соединения и даёт возможность отправки данных на начальном этапе установки соединения. Для включения TFO следует использовать опцию hosts_try_fastopen;
  • Включена по умолчанию проверка наличия дискового пространства и inode для файловых систем со спулом и логами. По умолчанию опции check_{log,spool}_{inodes,space} выставлены в значения 100 inode и 10MB свободного пространства;
  • Реализовано расширение "CHUNKING ESMTP", определённое в RFC 3030, применение которого может привести к небольшому росту производительности и снижению сетевой нагрузки. Расширение включается конфигурационной опцией chunking_advertise_hosts в основном файле конфигурации или опцией hosts_try_chunking в числе параметров транспорта smtp;
  • Добавлена экспериментальная поддержка выборок из БД LMDB;
  • Новый оператор для вычисления хэша над строкой: ${sha3:Строка} или ${sha3_Номер:Строка}, где Номер может быть 224, 256 (по умолчанию, 384 и 512;
  • Добавлены средства для работы с именованными очередями: в командной строке может быть задан аргумент с именем очереди для связанных с очередями операций, а также может быть задан модификатор ACL для выбора очереди для сообщения. Имя очереди доступно через переменную $queue_name;
  • Новые операторы base32 и base32d;
  • Добавлен оператор escape8bit, похожий на escape но не экранирующий символы перевода строки;
  • Реализован новый параметр log_selector "dnssec", при указании которого в строки принятия и доставки добавляется тег "DS";
  • Добавлен спекулятивный режим отладки, реализованный через опцию "kill" в модификаторе ACL "control=debug";
  • В ACL-блок cutthrough_delivery добавлена поддержка опции defer=pass при которой полученный от целевого хоста код возврата 4xx сразу возвращается инициатору запроса, вместо помещения сообщения в спул;
  • В пробрасываемых (cutthrough) соединениях обеспечено использование параметра SIZE для MAIL FROM, если целевой хост поддерживает его и известен размер данных;
  • Если в основных настройках не выставлен параметр tls_certificate, Exim теперь сгенерирует самоподписанный сертификат при обработке входящих TLS-соединений;
  • Добавлена поддержка библиотек Radius, возвращающих код REJECT_RC;
  • Ускорены запуск основного процесса и установка TCP-соединения;
  • Добавлена новая опция ведения логов syslog_pid;
  • Проведена чистка от устаревших возможностей. Из состава удалены ACL-условие "demime" (следует использовать acl_smtp_mime и acl_not_smtp_mime) и опция gnutls_require_mac.


  1. Главная ссылка к новости (https://lists.exim.org/lurker/...)
  2. OpenNews: Релиз почтового сервера Exim 4.87
  3. OpenNews: Критическая локальная уязвимость в Exim
  4. OpenNews: Выпуск почтового сервера Exim 4.86
  5. OpenNews: Выпуск почтового сервера Exim 4.85 с поддержкой DANE
  6. OpenNews: В почтовом сервере Exim 4.82.1 устранена критическая уязвимость
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: exim, mail
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (36) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Дед Анон (?), 22:28, 25/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я так понимаю не спроста первое место по популярности?
     
     
  • 2.3, kai3341 (ok), 22:47, 25/12/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Конечно неспроста! Им Debian по умолчанию комплектуется
     
     
  • 3.21, Аноним (-), 04:01, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Смешно, что sendmail скриптами 10-томными не компилируется (дебиан).
     
  • 3.25, PnDx (ok), 11:43, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Он (Debian) таки не выставляет "из коробки" релэить 25 порт, как когда-то для sendmail делали.
    Так что, считали более-менее настроенные почтовики. Exim идёт туда, где нужно что-то сделать с письмом по дороге, отличное от предусмотренного авторами postfix и парой рабочих милтеров к нему (утрирую, но слегка). Как показала статистика, даже с учётом достаточно популярных zimbra|open-xchange postfix не добирает.
     
     
  • 4.27, Аноним (-), 14:09, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И всё-же проще настраивать и поддерживать идущий из коробки вариант, когда первый раз настраивал на vds-ке именно из-за этого было отдано предпочтение exim-у, так и работает годами, только смотришь изменения в файлах настройки и правишь под новые ограничения крупных мэйл-площадок
     
     
  • 5.30, PnDx (ok), 16:00, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "Врождённая дырявость" exim (поработав в своё время с sendmail'ом я теперь не так категоричен) против врождённого отсутствия функционала в postfix. (Или не менее дырявых милтеров, вспомните тот же dkim.) Тут кому как.
    Мне вот в своё время оказалось проще написать N функций на перле и воткнуть в exim. На выходе получилась система операторского уровня с кучей "плюшек" по маршрутизации (внизу для этого постгресные реляции, так что рулится "на лету"). И отсутствием комплейнов "by design". Крутится себе на нескольких площадках, каши не просит * заодно и похвастался.
    Можно так с postfix? В приципе, да. Милтер на дедуп рассылок, милтер на грейлист, милтер на dkim, милтер на всякий свитчинг по контенту, милтер на… Ну, Вы поняли.
     
     
  • 6.32, Michael Shigorin (ok), 16:35, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Мне вот в своё время оказалось проще написать N функций на перле
    > и воткнуть в exim. На выходе получилась система операторского уровня с
    > кучей "плюшек" по маршрутизации

    О чём и речь, что таких явно не пол-интернета надо.

    PS: кто-нить знает, дебианщики с ручника по этому поводу вообще собираются сниматься?  Потому как заведомо проблемный дефолт, который для обоснованного применения требует нетривиального рукоприкладства -- обычно большая глупость.  Даже странно как-то.

     
  • 6.34, vstakhov (ok), 18:09, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    *Пожимая плечами* Или Rspamd + Rmilter для всего этого. Но можно и 10 мильтров или систему из говна и палок на Exim, да.
     
     
  • 7.35, PnDx (ok), 18:32, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > *Пожимая плечами* Или Rspamd + Rmilter для всего этого. Но можно и

    https://github.com/vstakhov/rmilter ? Поздравляю. 9 лет труда и X человеко-часов от N комитеров. Выглядит солидно. Но: незакрытые ошибки в dkim (это я краем глаза глянул). Что неудивительно, протокол явно переусложнён, судя по багам в известных мне реализациях (+2 от rmilter)
    Но это скорее конкурент Зимбре&C°. У оператора (если он не РТК :) задача *не* фильтровать спам (т.к. Закон о связи), но и пропускать как есть что-то нет желания. Отсюда всякие нюансы, которые дешевле реализовать на exim (в т.ч. время разработчика и время cpu на протаскивание 1 сообщения).

     
     
  • 8.36, vstakhov (ok), 19:24, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я про https github com vstakhov rspamd Rmilter - это просто интерфейс для пров... текст свёрнут, показать
     
     
  • 9.38, Аноним (-), 01:42, 27/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Сопротивляються нормально жизни, привыкли просто жить в грязи ... текст свёрнут, показать
     
  • 4.29, Michael Shigorin (ok), 15:38, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Так что, считали более-менее настроенные почтовики.

    Хорошо бы.

    > Exim идёт туда, где нужно что-то сделать с письмом по дороге, отличное от
    > предусмотренного авторами postfix и парой рабочих милтеров к нему (утрирую, но слегка).

    Мой личный вопрос -- зачем вообще применять exim где-либо, кроме особо извратных хабов с соответствующей маршрутизацией (по сути единственная разумная ниша пошлипочта в последнее время)... т.е. там, где за эту его врождённую дырявость есть хоть какой-то смысл платить повышенными вниманием*квалификацией.

     
     
  • 5.31, PnDx (ok), 16:02, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гм… Промазал по "Ответить", см. выше.
     
  • 2.4, vantoo (ok), 23:07, 25/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Действительно хороший почтовик с понятным конфигом и широкими возможностями.
     
  • 2.6, KonstantinB (ok), 23:33, 25/12/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В нем достаточно "низкоуровневая" конфигурация с возможностями программирования, для нестандартных задач подходит идеально. Да и со стандартными отлично справляется. Хотя для стандартных задач разницы между exim и postfix практически никакой.
     
     
  • 3.10, особый смысл (?), 01:32, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Главное чтобы не sendmail
     
     
  • 4.16, Ilya Indigo (ok), 02:18, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Главное чтобы не sendmail

    Даже на огрызке postfix по умолчанию.

     
  • 2.18, о6какатрон (?), 02:35, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    годнота только им и шлю
     
  • 2.19, all_glory_to_the_hypnotoad (ok), 02:41, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, как видишь, это г. архитектурное решето

    > уязвимость, которая позволяет через выполнение действий под идентификатором пользователя почтового сервера Exim, получить доступ в root shell через манипуляцию с символическими ссылками в директории со спулом сообщений

    а так хорошо оно выехало в топ из-за пропихивания дефолтным mta в debian

     

  • 1.8, Ilya Indigo (ok), 00:42, 26/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Ответ на #6
    > Хотя для стандартных задач разницы между exim и postfix практически никакой.

    Вот и я не вижу что полезного для меня умеет exim, что не умела бы связка postfix/dovecot. Возможно мне не приходилась сталкиваться с нестандартными почтовыми задачами и надеюсь никогда не придётся. :-)
    А пока postfix/dovecot, делают почти всё что мне нужно.
    Разве что не удалось настроить аутентификацию по ключу и/или паролю, точнее я ожидал, что она будет работать как в ssh, есть публичный, пускает по ключу; нет ключа, но есть пароль, пускает по паролю, нету ничего - гуляй Вася.
    А dovecot умеет только чтобы все или и сертификат и пароль предоставляли, или все предоставляли только сертификат, а пароль записывается пустой, и парольная аутентификация не возможна. Но это косяк dovecot.

     
     
  • 2.9, Sw00p aka Jerom (?), 01:22, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>А dovecot умеет только чтобы все или и сертификат и пароль предоставляли, или все предоставляли только сертификат, а пароль записывается пустой, и парольная аутентификация не возможна. Но это косяк dovecot.

    http://wiki.dovecot.org/Variables

    %k - cert "valid" if client had sent a valid client certificate, otherwise empty.

    думаю можно эту переменную как то пихнуть в sql запрос на проверку пароля и пускать либо по паролю либо по ключу. Нужно поэкспериментировать.

    ps: по-моему всё сводится к стандарту протокола имап или поп3, там нуно полюбэ пройти авторизацию (хоть с пустой строкой), поправьте если ошибаюсь.

     
     
  • 3.14, Ilya Indigo (ok), 01:57, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>>А dovecot умеет только чтобы все или и сертификат и пароль предоставляли, или все предоставляли только сертификат, а пароль записывается пустой, и парольная аутентификация не возможна. Но это косяк dovecot.
    > http://wiki.dovecot.org/Variables
    > %k - cert "valid" if client had sent a valid client certificate,
    > otherwise empty.

    Большое спасибо за наводку, попробую у себя на сервере как-то провнернуть.
    Правда у меня не sql а passwd-file и мне не совсем понятно, где и когда проверять на %k

    > ps: по-моему всё сводится к стандарту протокола имап или поп3, там нуно
    > полюбэ пройти авторизацию (хоть с пустой строкой), поправьте если ошибаюсь.

    К сожалению, в этих протоколах я не силён, возможно и так.

     
  • 2.11, Sw00p aka Jerom (?), 01:41, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А dovecot умеет только чтобы все или и сертификат и пароль предоставляли,
    > или все предоставляли только сертификат, а пароль записывается пустой, и парольная
    > аутентификация не возможна. Но это косяк dovecot.

    на вскидку это можно заюзать http://wiki2.dovecot.org/Authentication/MultipleDatabases

    Dovecot supports defining multiple authentication databases, so that if the password doesn't match in the first database, it checks the next one.

    определим два passdb

    passdb {
      driver = sql
      args = /etc/dovecot/dovecot-sql-CERT.conf.ext // тут sql где проверка тока на валидность ключа
      #result_failure = continue
      #result_success = return-ok
    }

    passdb {
      driver = sql
      args = /etc/dovecot/dovecot-sql.conf.ext // тут sql где обычная проверка
    }

    # dovecot-sql-CERT.conf.ext
    password_query = SELECT userid as user, nopassword FROM users WHERE user = '%u' and 'valid' = '%k'

    # dovecot-sql.conf.ext
    password_query = SELECT userid as user, password FROM users WHERE user = '%u'

    ps: не тестил, проверьте

     
     
  • 3.15, Ilya Indigo (ok), 02:01, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А если я не использую sql.
    passdb {
      driver = passwd-file
      args = scheme=ssha512 username_format=%u /etc/dovecot/users
    }
    userdb {
      driver = passwd-file
      args = username_format=%u /etc/dovecot/users
    }
    Как тут мне использовать %k не понятно.

    passdb {
      args = scheme=ssha512 username_format=%u /etc/dovecot/users
      auth_verbose = default
      default_fields =
      deny = no
      driver = passwd-file
      master = no
      name =
      override_fields =
      pass = no
      result_failure = continue
      result_internalfail = continue
      result_success = return-ok
      skip = never
    }
    Попробую покапать в сторону args и прочих параметров.

    Нет все эти параметры для меня бесполезны.
    Задал вопрос тут https://ru.stackoverflow.com/q/607830/209154

     
     
  • 4.17, Sw00p_aka_Jerom (ok), 02:26, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    боюсь никак

    passwd-file относится к Success/failure databases, а SQL - Lookup databases, и переменную можно передать ток в случае SQL. Вам просто нуно отдельно держать одну табличку SQL с юзерами (без паролей), а passwd-file это фолбек механизм будет.

    пс: тут есть ещё кульная вещь как Dovecot supports (v2.2.25+) external authentication policy server. http://wiki2.dovecot.org/Authentication/Policy, через неё множно спокойно реализовать любую политику аутентификации.

     
     
  • 5.20, Ilya Indigo (ok), 03:34, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > боюсь никак
    > passwd-file относится к Success/failure databases, а SQL - Lookup databases, и переменную
    > можно передать ток в случае SQL. Вам просто нуно отдельно держать
    > одну табличку SQL с юзерами (без паролей), а passwd-file это фолбек
    > механизм будет.
    > пс: тут есть ещё кульная вещь как Dovecot supports (v2.2.25+) external authentication
    > policy server. http://wiki2.dovecot.org/Authentication/Policy, через неё множно спокойно
    > реализовать любую политику аутентификации.

    Большое спасибо Вам за ответы, примеры и информацию! :-)

     
  • 2.12, Sw00p aka Jerom (?), 01:46, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    одна ток неувязочка, думаю логин он будет брать из сертификата и подставлять в место переменной %u (You may also force the username to be taken from the certificate by setting auth_ssl_username_from_cert = yes.), тогда желательно ещё иметь доступ к отправленному логину в команде AUTH, чтобы написать что-то вроде

    WHERE 'cert_user' = '%auth_u' and 'valid' = '%k'


     
  • 2.23, SubGun (ok), 09:09, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    < Вот и я не вижу что полезного для меня умеет exim, что не умела
    < бы связка postfix/dovecot.

    Из тривиального - отправка на Exchange, если пользователь там есть, и доставка локально, если нет. Для меня было удивлением узнать, что postfix такого не умеет.

     
     
  • 3.24, Ilya Indigo (ok), 09:17, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Из тривиального - отправка на Exchange, если пользователь там есть, и доставка
    > локально, если нет. Для меня было удивлением узнать, что postfix такого
    > не умеет.

    Что-то я не понял ситуацию.
    Если пользователя нет, то mta должен отправить письмо отправителю. Как и кому имено он локально должен доставлять?

     
     
  • 4.28, Аноним (-), 14:14, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Из тривиального - отправка на Exchange, если пользователь там есть, и доставка
    >> локально, если нет. Для меня было удивлением узнать, что postfix такого
    >> не умеет.
    > Что-то я не понял ситуацию.
    > Если пользователя нет, то mta должен отправить письмо отправителю. Как и кому
    > имено он локально должен доставлять?

    вероятно есть в организации 2 типа сотрудников, одни сидят на exchange, другие напрямую с почтовика( ну либо там есть ящик для всего остального, который потом в полуручном режиме разбирается ).

     
     
  • 5.33, Sw00p aka Jerom (?), 17:43, 26/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>другие напрямую с почтовика

    эт как ? в смысле сам оутлук отправляет письмо на МХ ?

     
  • 3.37, nikos_d (?), 01:35, 27/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а почему не прицепить Postfix   к Ldap ?   то что Вы хотите  вполне делается  очередным самописный miller, но  какая-то извращенная логика возлагать ответсвенность за  " есть ли тут  ящик" на почтовый сервер,  не проще решить правилами на Exchange  (  + фейковый домен на постфикс)
     
     
  • 4.42, ЫгиПгт (?), 18:51, 28/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какой смысл городить огород, если я могу легко в Exim сделать lookup к Ldap(AD), и по его результатам зароутить почту так, как мне нужно?!
     
     
  • 5.43, nikosd (ok), 04:03, 29/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Какой смысл городить огород, если я могу легко в Exim сделать lookup
    > к Ldap(AD), и по его результатам зароутить почту так, как мне
    > нужно?!

    Если у Вас есть доступ к LDAP, то зачем огод ? -  огород когда  его нет (по описанию я понял что  нужно обработать случай когда нет доступа к ldap  и по реакции на попытку  доставки предпринимать действия, это  точно скрипты писать придется. ) .
    Не буду проверять, но, вроде бы, postfix  спокойно позволяет написать два  источника для virtaul_maps  и обрабатывает их в порядке указания, то есть если в первом есть вхождение то  второй уже не сработает (  за исключением милого случая когда случится совпадение результата преобразования).  ldap   в нем то ли из коробки, то ли пакетов, но вполне доступен  и работает, как и положено, без  дерганья конфигов по изменению базы.  


     
  • 3.41, ALex_hha (ok), 11:46, 27/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    transport_maps + relay_maps не осилил?
     

  • 1.13, Вася (??), 01:48, 26/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Больше половины предпочитают Exim
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру