CVE-2024-42009
Roundcube Webmail
2025-06-09
RoundCube Webmail contains a cross-site scripting vulnerability. This vulnerability could allow a remote attacker to steal and send emails of a victim via a crafted e-mail message that abuses a Desanitization issue in message_body() in program/actions/mail/show.php.
Технический анализ и план устранения
Суть уязвимости
CVE-2024-42009 представляет собой критическую уязвимость типа Stored XSS (хранимый межсайтовый скриптинг), возникающую из-за недостаточной очистки (desanitization) содержимого писем в функции message_body() файла program/actions/mail/show.php.
Злоумышленник может отправить специально сформированное электронное письмо, содержащее вредоносный JavaScript-код. При просмотре такого письма жертвой в интерфейсе Roundcube, код исполняется в контексте сессии пользователя. Это позволяет атакующему: * Получить полный доступ к почтовому ящику жертвы. * Незаметно отправлять письма от имени пользователя. * Похищать конфиденциальные данные и токены аутентификации.
Как исправить
Основным и наиболее надежным способом устранения уязвимости является обновление Roundcube Webmail до версий, в которых ошибка была исправлена разработчиками (1.6.8 или 1.5.8).
Шаг 1: Проверка текущей версии
Перейдите в корневую директорию Roundcube и проверьте версию в файле composer.json или через интерфейс.
Шаг 2: Резервное копирование Перед обновлением обязательно создайте бэкап базы данных и файлов приложения.
Шаг 3: Обновление через скрипт installto.sh Скачайте новую версию с официального сайта или GitHub и запустите скрипт обновления, указав путь к текущей установке:
./bin/installto.sh /var/www/roundcube
Шаг 4: Обновление через Composer (если используется) Если Roundcube установлен как зависимость Composer:
composer update roundcubemail/roundcubemail --no-dev
Временные меры
Если немедленное обновление системы невозможно, рекомендуется применить следующие защитные механизмы:
1. Ручной патч кода
Если вы не можете обновить версию целиком, внесите изменения в файл program/lib/Roundcube/rcube_washtml.php (или соответствующий файл обработки HTML в вашей версии), чтобы усилить фильтрацию атрибутов и тегов, которые могут быть использованы для обхода очистки. Сверьтесь с официальным коммитом исправления в репозитории Roundcube.
2. Настройка Content Security Policy (CSP) Добавьте строгие заголовки CSP в конфигурацию веб-сервера (Nginx или Apache), чтобы запретить выполнение встроенных скриптов (inline scripts) и ограничить источники загрузки контента:
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';";
3. Отключение отображения HTML-писем
В качестве экстренной меры можно проинструктировать пользователей переключить режим отображения писем на "Plain Text" (Простой текст) в настройках интерфейса:
Настройки -> Отображение сообщений -> Показывать в HTML (снять галочку).