CVE-2021-31196

Microsoft Exchange Server

ВЕРОЯТНОСТЬ 3.3%

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

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).

  1. Определите текущую версию Exchange Server и уровень обновлений:
Get-ExchangeServer | fl Name, Edition, AdminDisplayVersion

  1. Загрузите и установите соответствующее обновление безопасности (выпущенное в июле 2021 года или позже). Для корректной работы патча Exchange должен быть обновлен до поддерживаемого CU (например, для Exchange 2019 это CU10/CU11, для Exchange 2016 — CU21/CU22).

  2. После установки обновлений выполните перезагрузку сервера.

  3. Проверьте корректность установки патча, убедившись, что версии файлов в каталоге Bin обновились:

Get-Command ExSetup.exe | ForEach-Object {$_.FileVersionInfo}

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

Если немедленная установка патчей невозможна, необходимо применить меры по ограничению векторов атаки, однако они не гарантируют полную защиту.

  1. Ограничьте доступ к виртуальным директориям PowerShell на уровне IIS для внешних сетей.

  2. Используйте модуль 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

  1. Настройте фильтрацию на уровне Web Application Firewall (WAF), блокируя любые запросы к /autodiscover/autodiscover.json, которые содержат попытки обращения к бэкенд-сервисам через параметры запроса.