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 является не самым популярным почтовым клиентом, атаки на него могут нанести значительный ущерб в виде хищения конфиденциальной информации, поскольку это ПО довольно часто используется государственными органами.
Всё вышеизложенное в очередной раз подчеркивает необходимость своевременного обновления ПО, используемого для взаимодействия с внешней недоверенной средой.