CVE-2024-29059
Microsoft .NET Framework
2025-02-04
Microsoft .NET Framework contains an information disclosure vulnerability that exposes the ObjRef URI to an attacker, ultimately enabling remote code execution.
Технический анализ и план устранения
Суть уязвимости
CVE-2024-29059 представляет собой критическую уязвимость в Microsoft .NET Framework, связанную с раскрытием конфиденциальной информации. Проблема кроется в механизме обработки объектов через .NET Remoting.
Уязвимость позволяет злоумышленнику получить доступ к URI объекта ObjRef. ObjRef — это структура, используемая для передачи ссылок на объекты между доменами приложений или процессами. Раскрытие этого URI дает атакующему необходимые данные для взаимодействия с удаленным объектом. В сочетании с другими техниками десериализации или манипуляции удаленными вызовами, это приводит к возможности удаленного выполнения произвольного кода (RCE) в контексте процесса, исполняющего .NET Framework.
Как исправить
Основным и единственным надежным способом устранения уязвимости является установка официальных обновлений безопасности от Microsoft (Security Updates), выпущенных в мае 2024 года.
- Определите версию установленного .NET Framework и операционной системы.
- Запустите Центр обновления Windows (Windows Update) для автоматической загрузки патчей.
- Для ручной установки скачайте соответствующий пакет обновления из Microsoft Update Catalog.
Команда для проверки установленных версий .NET через PowerShell:
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version -EA 0 | Select-Object PSChildName, Version
Команда для принудительного поиска обновлений через PowerShell (модуль PSWindowsUpdate):
Install-Module PSWindowsUpdate
Get-WindowsUpdate -Install -KBArticleID KB5038283, KB5038285
(Примечание: Номера KB могут варьироваться в зависимости от версии ОС и версии .NET Framework).
Временные меры
Если немедленная установка патчей невозможна, необходимо минимизировать поверхность атаки, используя следующие компенсационные меры:
-
Отключение .NET Remoting: Если ваше приложение не использует технологию .NET Remoting (которая считается устаревшей), убедитесь, что соответствующие службы и порты отключены.
-
Ограничение сетевого доступа: Настройте правила межсетевого экрана (Firewall) так, чтобы блокировать входящий трафик на порты, используемые приложениями с .NET Remoting, из недоверенных сетей.
-
Использование безопасной десериализации: Если приложение использует
BinaryFormatter, перейдите на более безопасные сериализаторы (например,System.Text.Json), так какBinaryFormatterфундаментально небезопасен при работе сObjRef. -
Настройка прав доступа: Запускайте .NET приложения с минимально необходимыми привилегиями (принцип Least Privilege), чтобы ограничить ущерб в случае успешной эксплуатации RCE.
Команда для блокировки порта (например, 8080, если на нем работает Remoting) через Windows Firewall:
New-NetFirewallRule -DisplayName "Block NET Remoting" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Block