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), чтобы ограничить ущерб в случае успешной эксплуатации.