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, которое заменяет уязвимую библиотеку и изменяет логику обработки токенов.
- Определите версию вашей платформы Sitecore XP (уязвимы версии с 7.0 по 9.0 Update-2).
- Скачайте соответствующий пакет исправлений с портала Sitecore Support (требуется авторизация).
- Создайте резервную копию файла
Sitecore.Security.AntiCsrf.dllв директории/bin. - Замените старый файл
Sitecore.Security.AntiCsrf.dllна новый из архива исправления. - Если в архиве присутствует файл конфигурации (например,
Sitecore.Security.AntiCsrf.config), примените изменения в папку/App_Config/Include. - Очистите временные файлы 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
Временные меры
Если немедленная установка патча невозможна, примените следующие защитные меры для снижения риска:
- Отключение модуля AntiCSRF (если допустимо):
Если вы используете альтернативные методы защиты от CSRF, временно отключите штатный модуль в
web.config, закомментировав соответствующий обработчик:
<!-- <add type="Sitecore.Security.AntiCsrf.AntiCsrfModule, Sitecore.Security.AntiCsrf" name="SitecoreAntiCsrfModule" /> -->
-
Настройка WAF (Web Application Firewall): Настройте правила фильтрации для блокировки подозрительных POST-запросов, содержащих параметр
__CSRFTOKENс признаками сериализованных объектов .NET (например, наличие заголовков типов или специфических байтовых последовательностейAAEAAAD/////). -
Ограничение прав доступа: Убедитесь, что Identity пула приложений IIS имеет минимально необходимые привилегии в операционной системе (принцип Least Privilege), чтобы ограничить радиус поражения в случае успешной эксплуатации.
-
Мониторинг логов: Настройте алерты на необычные ошибки в логах Sitecore, связанные с
System.Runtime.SerializationилиBinaryFormatter.