CVE-2019-9875

Sitecore CMS and Experience Platform (XP)

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

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

2025-03-26

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

Sitecore CMS and Experience Platform (XP) contain a deserialization vulnerability in the Sitecore.Security.AntiCSRF module that allows an authenticated attacker to execute arbitrary code by sending a serialized .NET object in the HTTP POST parameter __CSRFTOKEN.

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

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

CVE-2019-9875 представляет собой критическую уязвимость небезопасной десериализации в модуле Sitecore.Security.AntiCSRF. Проблема заключается в том, что приложение некорректно обрабатывает данные в HTTP POST параметре __CSRFTOKEN.

Аутентифицированный злоумышленник может внедрить специально сформированный сериализованный .NET-объект в этот параметр. При попытке сервера десериализовать данные для проверки CSRF-токена происходит выполнение произвольного кода (RCE) в контексте учетной записи, под которой запущен пул приложений IIS. Это позволяет полностью скомпрометировать сервер базы данных и веб-сервер Sitecore.

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

Основным способом устранения является установка официального исправления (Hotfix) от Sitecore, которое заменяет уязвимую библиотеку и изменяет логику обработки токенов.

  1. Определите версию вашей платформы Sitecore XP (уязвимы версии с 7.0 по 9.0 Update-2).
  2. Скачайте соответствующий пакет исправлений с портала Sitecore Support (требуется авторизация).
  3. Создайте резервную копию файла Sitecore.Security.AntiCsrf.dll в директории /bin.
  4. Замените старый файл Sitecore.Security.AntiCsrf.dll на новый из архива исправления.
  5. Если в архиве присутствует файл конфигурации (например, Sitecore.Security.AntiCsrf.config), примените изменения в папку /App_Config/Include.
  6. Очистите временные файлы ASP.NET:
Stop-Service W3SVC
Remove-Item -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\*" -Recurse -Force
Start-Service W3SVC

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

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

  1. Отключение модуля AntiCSRF (если допустимо): Если вы используете альтернативные методы защиты от CSRF, временно отключите штатный модуль в web.config, закомментировав соответствующий обработчик:
<!-- <add type="Sitecore.Security.AntiCsrf.AntiCsrfModule, Sitecore.Security.AntiCsrf" name="SitecoreAntiCsrfModule" /> -->

  1. Настройка WAF (Web Application Firewall): Настройте правила фильтрации для блокировки подозрительных POST-запросов, содержащих параметр __CSRFTOKEN с признаками сериализованных объектов .NET (например, наличие заголовков типов или специфических байтовых последовательностей AAEAAAD/////).

  2. Ограничение прав доступа: Убедитесь, что Identity пула приложений IIS имеет минимально необходимые привилегии в операционной системе (принцип Least Privilege), чтобы ограничить радиус поражения в случае успешной эксплуатации.

  3. Мониторинг логов: Настройте алерты на необычные ошибки в логах Sitecore, связанные с System.Runtime.Serialization или BinaryFormatter.