Roundcube Webmail – клиент для электронной почты с открытым исходным кодом, написанный на PHP. Обширный функционал, а также возможность удобного доступа к почтовым аккаунтам из браузера без необходимости установки полноценных почтовых клиентов обусловили его популярность в том числе среди коммерческих и государственных организаций многих стран.

Это делает его привлекательной целью для злоумышленников, которые адаптируют эксплойты через достаточно короткое время, после появления сведений о них в открытом доступе, нацеливаясь на похищение учетных данных и почтовой переписки организаций.

Пример одной из подобных атак мы хотим привести в этой статье.

О письме

В сентябре 2024 года специалистами TI-департамента экспертного центра безопасности Positive Technologies (PT ESC) было обнаружено письмо, направленное на электронную почту одного из государственных органов страны СНГ. Временные метки говорят о том, что оно было отправлено еще в июне 2024 года. Внешне письмо представляло собой сообщение без текста и содержало вложенный документ.

При этом почтовый клиент не отображал наличие вложения. В теле письма есть характерные теги, содержащие конструкцию eval(atob(...)), декодирующие и выполняющие код на JavaScript:

Характерное имя атрибута (attributeName="href "), содержащее дополнительный пробел, говорит о том, что это письмо представляет собой попытку эксплуатации уязвимости CVE-2024-37383 в почтовом клиенте Roundcube Webmail.

Об уязвимости

Уязвимость CVE-2024-37383 была обнаружена в веб-клиенте для работы с электронной почтой Roundсube Webmail. Она относится к типу хранимых XSS (stored XSS), позволяя выполнить JavaScript-код атакующего в контексте страницы пользователя. Для этого достаточно открыть вредоносное письмо клиентом Roundcube версии 1.5.6 и ниже либо версии от 1.6 до 1.6.6. Уязвимость обнаружили исследователи CrowdStrike, а разработчики Roundcube устранили ее 19 мая 2024 года.

Ошибка заключается в коде, выполняющем обработку SVG-элементов в разметке тела письма. Перед тем как отобразить письмо, Roundcube производит его препроцессинг — обрабатывает содержимое определенных тегов и их атрибутов (например, экранирует специальные символы). Среди прочего на этой стадии из итогового тела письма исключаются элементы SVG, которые имеют атрибуты <animate>, со ссылкой на элемент:

Их содержимое заменяется на пустые элементы SVG:

Функция, осуществляющая препроцессинг HTML-элементов в теле письма, выглядит следующим образом:

Для того чтобы теги <animate>, <animatecolor>, <set>, <animatetransform> исключались из итоговой страницы при условии, в них дополнительно должен содержаться атрибут href:

Наличие этого атрибута проверяется вызовом функции attribute_value($node, 'attributename', 'href'), код которой выглядит следующим образом:

При сравнении не учитывается, что имя атрибута тега, полученное при парсинге документа, может содержать пробелы. Таким образом, при добавлении к имени атрибута href лишнего пробела, конструкция вида

не будет отфильтрована и попадет в итоговый документ. Перед этим она будет приведена к виду {имя атрибута} = {значение атрибута}:

Если подставить в качестве значения href JavaScript-код, получаем возможность его выполнения в контексте страницы Roundcube при открытии вредоносного письма клиентом Roundcube. PoC, опубликованный для уязвимости, выглядит следующим образом:

О полезной нагрузке

Код, который выполняется в функции eval, сохраняет пустой документ Road map.docx (закодирован в скрипте в Base64). Помимо этого, предпринимается попытка получить сообщения из почтового сервера с помощью плагина ManageSieve. Выдержка из запроса приведена ниже:

Дополнительно в HTML-страницу, отображаемую пользователю, добавляется форма авторизации с полями rcmloginuser и rcmloginpwd — логином и паролем пользователя для клиента Roundcube. Расчет здесь, предположительно, делается на возможность автозаполнения указанных полей либо на то, что пользователь самостоятельно введет указанные данные из-за необходимости якобы повторной авторизации.

Полученные таким образом логин и пароль отправляются на сервер libcdn.org:

Сам домен libcdn.org был зарегистрирован 6 июня 2024 года и резолвится на инфраструктуру Cloudflare.

Выводы

Уязвимости Roundcube Webmail неоднократно становились инструментом в руках злоумышленников. Последней из таких атак была кампания, относящаяся к кластеру активности группировки Winter Vivern, которая через уязвимость XSS в Roudcube атаковала государственные организации ряда европейских стран. При этом, исходя из имеющихся сведений, выявленную активность не удалось связать напрямую с известными акторами.

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

Всё вышеизложенное в очередной раз подчеркивает необходимость своевременного обновления ПО, используемого для взаимодействия с внешней недоверенной средой.

Сетевые индикаторы и Матрица MITRE

Сетевые индикаторы

Индикатор

Назначение

libcdn.org

Отправка реквизитов доступа к учетной записи почтового сервера

rcm.codes

Отправка содержимого почтового ящика

Матрица MITRE

ID

Имя

Описание

Execution

T059.007

JavaScript

Злоумышленники используют JavaScript-код для выполнения полезной нагрузки в контексте сессии почтового клиента в браузере жертвы

Collection

T1114.003

Remote email collection

Злоумышленники собирают содержимое почтового ящика жертвы с помощью плагина ManageSieve

T1056.004

Web portal capture

Злоумышленники вставляют поля ввода логина и пароля в веб-страницу письма и отправляют введенные данные на удаленный сервер

Комментарии (1)


  1. KeystoneD
    15.10.2024 10:53

    Довольно актуально для небольших предприятий, кстати. В том числе из критичных секторов промышленности. Сам знаю несколько предприятий которые сидят на Roundcube, раскину!