CVE-2019-9670
Synacor Zimbra Collaboration Suite (ZCS)
2022-01-10
Synacor Zimbra Collaboration Suite (ZCS) contains an improper restriction of XML external entity (XXE) vulnerability in the mailboxd component.
Технический анализ и план устранения
Суть уязвимости
Злоумышленник может отправить специально сформированное XML-сообщение (например, через почтовый клиент или API) на сервер Zimbra. Уязвимый компонент mailboxd некорректно обрабатывает внешние XML-сущности (XXE) в этом сообщении. Это позволяет атакующему:
* Читать произвольные файлы с файловой системы сервера (например, /etc/passwd, конфигурационные файлы).
* Инициировать исходящие сетевые запросы с сервера (SSRF).
* В некоторых случаях вызвать отказ в обслуживании (DoS).
Как исправить
Установите официальный патч от Synacor, который полностью устраняет уязвимость.
- Определите текущую версию ZCS:
bash su - zimbra zmcontrol -v -
Обновитесь до исправленной версии. Уязвимость устранена в следующих релизах:
- ZCS 8.8.15 Patch 1 и новее.
- ZCS 9.0.0 Patch 1 и новее. Скачайте соответствующий патч или полный установочный пакет с официального портала поддержки Synacor: https://www.zimbra.com/downloads/.
-
Установите обновление в соответствии с официальной инструкцией. Пример для установки патча из командной строки (выполняйте от root):
bash # Перейдите в каталог с загруженным патчем cd /tmp # Установите патч (имя файла будет отличаться) rpm -Uvh zimbra-patch-8.8.15_P1*.rpm # или для Ubuntu/Debian dpkg -i zimbra-patch-8.8.15_P1*.deb - Перезапустите Zimbra:
bash su - zimbra zmcontrol restart
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Настройте WAF (Web Application Firewall):
- Добавьте правило для блокировки HTTP-запросов, содержащих строки
<!DOCTYPE,<!ENTITY,SYSTEMилиPUBLICв теле запроса (body) или заголовках. - Пример правила для ModSecurity (CRS):
SecRule REQUEST_BODY "@rx (?:<!\\[CDATA\\[|<!DOCTYPE|<\\?xml).*?(?:\\]\\]>|\\?>)" "id:1000001,phase:2,deny,msg:'XXE Attack Attempt'"
- Добавьте правило для блокировки HTTP-запросов, содержащих строки
-
Ограничьте сетевой доступ:
- Настройте групповые политики (GPO) или локальные файрволлы, чтобы разрешить входящие соединения к портам Zimbra (например, 443, 7071) только из доверенных сетей (сети сотрудников, VPN).
-
Внесите изменения в конфигурацию Zimbra (как крайняя мера):
- Отключите обработку внешних DTD в используемом XML-парсере на уровне JVM. Это требует глубокого знания архитектуры и может нарушить функциональность. Рекомендуется только как временная мера до установки патча.
- Добавьте следующие свойства JVM для службы
mailboxdв файле/opt/zimbra/conf/localconfig.xml(в секциюmailboxd_java_options):-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.stream.XMLInputFactory=com.sun.xml.internal.stream.XMLInputFactoryImpl - После изменения перезапустите Zimbra:
bash su - zimbra zmcontrol restart
Важно: Временные решения лишь снижают риск и могут быть обойдены. Установка официального патча — обязательное и единственное полное решение.