В почтовом сервере Postfix обнаружена одна из самых серьезных проблем безопасности за всю историю существования проекта. Уязвимость проявляется только при использовании Postfix совместно с SASL-библиотекой Cyrus и задействовании методов аутентификации, отличных от PLAIN, LOGIN и ANONYMOUS, например, проблема присутствует при использовании методов CRAM-MD5, DIGEST-MD5, EXTERNAL, GSSAPI, KERBEROS_V4, NTLM, OTP, PASSDSS-3DES-1 и SRP. Уязвимость не затрагивает код SMTP-клиента и проявляется только для сервера, в настройках которого активированы параметры "smtpd_sasl_auth_enable = yes" и "smtpd_sasl_type = cyrus".
Разработчики не исключают возможность создания эксплоита, который позволит организовать выполнение кода злоумышленника на почтовом сервере с правами непривилегированного пользователя "postfix". Пользователь postfix ограничен в своих правах и не может влиять на работу рабочих процессов почтового сервера, но теоретически может быть использован для эксплуатации незакрытых системных уязвимостей. Поэтому для усиления защиты рекомендуется активировать в конфигурации функцию дополнительной изоляции рабочих процессов, через их помещение в chroot. В качестве временного решения проблемы, можно запретить использование методов аутентификации, отличных от PLAIN и LOGIN (в конфигурации Cyrus (smtpd.conf) нужно указать "mech_list: PLAIN LOGIN").
Уязвимость присутствует во всех версиях Postfix, выпущенных начиная с 13 марта 2000 года. Уязвимость исправлена в оперативно выпущенных обновлениях 2.5.13, 2.6.10, 2.7.4 и 2.8.3, а также в тестовых сборках Postfix 2.9, выпущенных начиная с 1 мая. Дополнительно подготовлены патчи для всех ранее выпущенных версий Postfix, начиная с релиза Postfix 1.1. Обновления с исправлением уязвимости уже выпущены для FreeBSD, но пока недоступны для Linux-дистрибутивов. Статус выхода исправлений можно отследить на следующих страницах: Gentoo, Mandriva, openSUSE, CentOS, Fedora, RHEL, Debian, Ubuntu.
Уязвимость вызвана ошибкой, приводящей к выходу за допустимые границы памяти, в коде разработанного в недрах проекта патча для обеспечения работы SASL на базе библиотеки Cyrus. Ошибка проявляется в случае, если после сбоя аутентификации, в рамках той же сессии осуществлена попытка использования другого метода аутентификации. Проблема связана с тем, что в соответствии с рекомендациями по использованию кода Cyrus SASL, в случае сбоя аутентификации необходимо инициализировать новый обработчик, который следует использовать для обслуживания следующего запроса клиента. В ситуации с Postfix, создание нового обработчика завершалось сбоем и последующие попытки аутентификации приводили к повреждению используемых другими подсистемами областей памяти.
1 S: 220 server.example.com ESMTP
2 C: EHLO client.example.com
3 S: 250-server.example.com
4 S: ...other server output skipped...
5 S: 250-AUTH DIGEST-MD5 LOGIN PLAIN CRAM-MD5
6 S: 250-AUTH=DIGEST-MD5 LOGIN PLAIN CRAM-MD5
7 S: ...other server output skipped...
8 C: AUTH CRAM-MD5
9 S: 334 PDg5ODE0OTI3MS4xMDQyMTg1OUBzZXJ2ZXIuZXhhbXBsZS5jb20+Cg==
10 C: *
11 S: 501 5.7.0 Authentication aborted
12 C: AUTH DIGEST-MD5
13 Connection closed by foreign host.
|