CVE-2021-31196
Microsoft Exchange Server
2024-08-21
Microsoft Exchange Server contains an information disclosure vulnerability that allows for remote code execution.
Технический анализ и план устранения
Суть уязвимости
CVE-2021-31196 представляет собой уязвимость раскрытия информации в Microsoft Exchange Server. Она тесно связана с цепочкой атак ProxyShell (вместе с CVE-2021-34473 и CVE-2021-34523). Проблема возникает из-за некорректной валидации параметров в компоненте PowerShell Remoting, работающем через Client Access Service (CAS). Злоумышленник может использовать эту уязвимость для обхода механизмов аутентификации, что в конечном итоге позволяет удаленно исполнять произвольный код (RCE) от имени системы (SYSTEM) через порт 443.
Как исправить
Основным способом устранения уязвимости является установка актуальных накопительных обновлений (Cumulative Update, CU) и обновлений безопасности (Security Update, SU).
- Определите текущую версию Exchange Server и уровень обновлений:
Get-ExchangeServer | fl Name, Edition, AdminDisplayVersion
-
Загрузите и установите соответствующее обновление безопасности (выпущенное в июле 2021 года или позже). Для корректной работы патча Exchange должен быть обновлен до поддерживаемого CU (например, для Exchange 2019 это CU10/CU11, для Exchange 2016 — CU21/CU22).
-
После установки обновлений выполните перезагрузку сервера.
-
Проверьте корректность установки патча, убедившись, что версии файлов в каталоге
Binобновились:
Get-Command ExSetup.exe | ForEach-Object {$_.FileVersionInfo}
Временные меры
Если немедленная установка патчей невозможна, необходимо применить меры по ограничению векторов атаки, однако они не гарантируют полную защиту.
-
Ограничьте доступ к виртуальным директориям PowerShell на уровне IIS для внешних сетей.
-
Используйте модуль IIS URL Rewrite для блокировки запросов, содержащих специфические паттерны атаки (пути, содержащие
/autodiscover.jsonс последующим пробросом в PowerShell):
Import-Module WebAdministration
$ruleName = "Block_ProxyShell"
$filter = ".*autodiscover\.json.*@.*powershell.*"
Add-WebConfigurationProperty -PSPath "IIS:\sites\Default Web Site" -Filter "system.webServer/rewrite/rules" -Name "." -Value @{Name=$ruleName; PatternSyntax="Regular Expressions"; StopProcessing="True"}
Set-WebConfigurationProperty -PSPath "IIS:\sites\Default Web Site" -Filter "system.webServer/rewrite/rules\rule[@Name='$ruleName']\match" -Name "url" -Value $filter
Set-WebConfigurationProperty -PSPath "IIS:\sites\Default Web Site" -Filter "system.webServer/rewrite/rules\rule[@Name='$ruleName']\action" -Name "type" -Value "CustomResponse"
Set-WebConfigurationProperty -PSPath "IIS:\sites\Default Web Site" -Filter "system.webServer/rewrite/rules\rule[@Name='$ruleName']\action" -Name "statusCode" -Value 403
- Настройте фильтрацию на уровне Web Application Firewall (WAF), блокируя любые запросы к
/autodiscover/autodiscover.json, которые содержат попытки обращения к бэкенд-сервисам через параметры запроса.