CVE-2019-9874
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 unauthenticated attacker to execute arbitrary code by sending a serialized .NET object in the HTTP POST parameter __CSRFTOKEN.
Технический анализ и план устранения
Суть уязвимости
CVE-2019-9874 представляет собой критическую уязвимость небезопасной десериализации в модуле Sitecore.Security.AntiCSRF. Проблема заключается в том, что компонент Anti-CSRF некорректно обрабатывает входящие данные в HTTP POST параметре __CSRFTOKEN.
Злоумышленник может сформировать специально подготовленный сериализованный объект .NET и отправить его в этом параметре. Поскольку проверка подлинности данных перед десериализацией отсутствует, это позволяет неавторизованному пользователю выполнить произвольный код (RCE) в контексте учетной записи, под которой запущен веб-сервер IIS.
Как исправить
Основным способом устранения является установка официального исправления (Hotfix) от Sitecore или обновление платформы до версии, где уязвимость устранена (Sitecore 9.2 и выше).
1. Определение версии Проверьте версию вашей Sitecore XP. Уязвимость затрагивает версии с 7.0 по 9.1 включительно.
2. Установка Hotfix
Для каждой конкретной версии Sitecore (например, 8.2 Update-7 или 9.0 Update-2) существует отдельный пакет исправления.
- Скачайте соответствующий Sitecore.Support.314494 (или аналогичный для вашей версии) с портала Sitecore Support.
- Замените библиотеку Sitecore.Security.AntiCSRF.dll в директории /bin вашего решения на исправленную версию из архива.
- Если в архиве присутствуют конфигурационные файлы (.config), добавьте их в папку /App_Config/Include.
3. Проверка конфигурации
Убедитесь, что в файле Sitecore.AntiCsrf.config установлен криптографически стойкий ключ для подписи токенов.
Временные меры
Если немедленное обновление или установка патча невозможны, примените следующие защитные меры:
1. Отключение модуля Anti-CSRF (если не используется)
Если ваше решение использует альтернативные методы защиты от CSRF, вы можете отключить уязвимый модуль в web.config:
<add name="SitecoreAntiCsrf" type="Sitecore.Security.AntiCsrf.AntiCsrfModule, Sitecore.Security.AntiCsrf" />
Примечание: Удаление этой строки может нарушить работу форм Sitecore Shell.
2. Настройка правил Web Application Firewall (WAF)
Настройте WAF (например, Azure Application Gateway или Cloudflare) на блокировку подозрительных POST-запросов, содержащих сложные сериализованные структуры в параметре __CSRFTOKEN. Ищите паттерны, характерные для гаджетов десериализации .NET (например, AAEAAAD/////).
3. Ограничение доступа к административной панели
Ограничьте доступ к путям /sitecore/admin и /sitecore/shell только для доверенных IP-адресов или через VPN.
Set-WebConfigurationProperty -Filter /system.webServer/security/ipSecurity -Name allowUnlisted -Value $false -PSPath IIS:\Sites\YourSiteName\sitecore
4. Изоляция процесса IIS Запустите пул приложений Sitecore от имени учетной записи с минимальными привилегиями (Managed Service Account), чтобы ограничить ущерб в случае успешной эксплуатации.