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. Проверьте и обновите плагины, особенно те, что работают с вложениями.

Временное решение

Если немедленное обновление невозможно, примените следующие меры:

  1. Ограничение в WAF (Web Application Firewall):

    • Настройте правила для блокировки HTTP-запросов, содержащих в параметрах последовательности для обхода директорий (../, ..\, %2e%2e%2f и т.д.).
  2. Изменение конфигурации 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';
    • Важно: Это может нарушить работу некоторых плагинов и требует предварительного тестирования. Полное устранение уязвимости — только обновление.