CVE-2017-16651
Roundcube Roundcube Webmail
2021-11-03
Roundcube Webmail contains a file disclosure vulnerability caused by insufficient input validation in conjunction with file-based attachment plugins, which are used by default.
Технический анализ и план устранения
Суть уязвимости
Злоумышленник может получить доступ к произвольным файлам на сервере, включая конфиденциальные данные (например, файлы конфигурации с паролями). Для этого используется специально сформированный запрос к функции обработки вложений (attachment plugins), которая по умолчанию является файловой (filesystem driver). Недостаточная проверка входных данных позволяет выйти за пределы ожидаемого каталога вложений.
Как исправить
Уязвимость устранена в следующих версиях Roundcube: * 1.2.6 * 1.1.10 * 1.0.11
Действия:
1. Определите текущую версию. Выполните команду в корневом каталоге установки Roundcube:
bash
grep -i "version" program/include/iniset.php
2. Создайте резервную копию данных и файлов приложения.
3. Обновите Roundcube до исправленной версии, соответствующей вашей ветке (1.2.x, 1.1.x или 1.0.x). Скачайте архив с официального сайта (https://roundcube.net/download) или используйте менеджер пакетов вашего дистрибутива.
* Пример для Debian/Ubuntu (если пакет в репозитории):
bash
sudo apt update
sudo apt install roundcube
Убедитесь, что установленная версия соответствует или выше указанных патчей.
4. Проверьте и обновите плагины, особенно те, что работают с вложениями.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничение в WAF (Web Application Firewall):
- Настройте правила для блокировки HTTP-запросов, содержащих в параметрах последовательности для обхода директорий (
../,..\,%2e%2e%2fи т.д.).
- Настройте правила для блокировки HTTP-запросов, содержащих в параметрах последовательности для обхода директорий (
-
Изменение конфигурации Roundcube (менее надежный метод):
- Отключите файловый драйвер для вложений, переключившись на использование базы данных (DB). Для этого в конфигурационном файле
config/config.inc.phpустановите:php $config['plugins'] = array_filter($config['plugins'], function($p) { return $p !== 'attachment_reminder'; }); $config['skin_logo'] = null; // И явно укажите драйвер БД для хранения вложений, если он у вас настроен // $config['imap_cache'] = 'db'; - Важно: Это может нарушить работу некоторых плагинов и требует предварительного тестирования. Полное устранение уязвимости — только обновление.
- Отключите файловый драйвер для вложений, переключившись на использование базы данных (DB). Для этого в конфигурационном файле