CVE-2020-12641

Roundcube Roundcube Webmail

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2023-06-22

Официальное описание

Roundcube Webmail contains an remote code execution vulnerability that allows attackers to execute code via shell metacharacters in a configuration setting for im_convert_path or im_identify_path.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2020-12641 — это критическая уязвимость типа Remote Code Execution (RCE) в Roundcube Webmail до версии 1.4.4. Проблема связана с недостаточной фильтрацией входных данных в конфигурационных параметрах im_convert_path и im_identify_path.

Атакующий с правами администратора (или имеющий доступ к изменению конфигурации) может внедрить метасимволы оболочки (shell metacharacters) в пути к бинарным файлам ImageMagick. Поскольку Roundcube использует эти пути для вызова системных команд через функции типа popen() или exec(), это позволяет выполнить произвольный вредоносный код на сервере от имени пользователя, под которым запущен веб-сервер (например, www-data).

Как исправить

Основным способом устранения уязвимости является обновление Roundcube Webmail до стабильной версии, в которой была внедрена строгая валидация путей.

  1. Создайте резервную копию базы данных и файлов приложения:
tar -czvf roundcube_backup.tar.gz /var/www/roundcube

  1. Скачайте последнюю стабильную версию Roundcube (минимум 1.4.4, рекомендуется актуальная ветка 1.4.x, 1.5.x или 1.6.x) с официального сайта или репозитория GitHub.

  2. Выполните скрипт обновления из директории с новой версией:

./bin/installto.sh /var/www/roundcube

  1. Если вы используете установку через пакетный менеджер (например, в Debian/Ubuntu), выполните обновление системы:
apt update && apt upgrade roundcube

Временные меры

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

  1. Проверьте файл конфигурации config/config.inc.php и убедитесь, что параметры im_convert_path и im_identify_path содержат только абсолютные пути к доверенным бинарным файлам без лишних символов:
$config['im_convert_path'] = '/usr/bin/convert';
$config['im_identify_path'] = '/usr/bin/identify';

  1. Если функционал обработки изображений (плагин filesystem_attachments или предпросмотр) не является критически важным, временно отключите использование ImageMagick, установив пустые значения:
$config['im_convert_path'] = null;
$config['im_identify_path'] = null;

  1. Ограничьте права на запись в файл конфигурации config.inc.php, чтобы веб-сервер не мог изменять его самостоятельно:
chown root:root /var/www/roundcube/config/config.inc.php
chmod 644 /var/www/roundcube/config/config.inc.php

  1. Настройте ограничения PHP open_basedir в php.ini, чтобы запретить интерпретатору обращаться к системным директориям вне веб-корня и стандартных путей библиотек.