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 |
Злоумышленники вставляют поля ввода логина и пароля в веб-страницу письма и отправляют введенные данные на удаленный сервер |
KeystoneD
Довольно актуально для небольших предприятий, кстати. В том числе из критичных секторов промышленности. Сам знаю несколько предприятий которые сидят на Roundcube, раскину!