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 года.

  1. Определите версию установленного .NET Framework и операционной системы.
  2. Запустите Центр обновления Windows (Windows Update) для автоматической загрузки патчей.
  3. Для ручной установки скачайте соответствующий пакет обновления из 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).

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

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

  1. Отключение .NET Remoting: Если ваше приложение не использует технологию .NET Remoting (которая считается устаревшей), убедитесь, что соответствующие службы и порты отключены.

  2. Ограничение сетевого доступа: Настройте правила межсетевого экрана (Firewall) так, чтобы блокировать входящий трафик на порты, используемые приложениями с .NET Remoting, из недоверенных сетей.

  3. Использование безопасной десериализации: Если приложение использует BinaryFormatter, перейдите на более безопасные сериализаторы (например, System.Text.Json), так как BinaryFormatter фундаментально небезопасен при работе с ObjRef.

  4. Настройка прав доступа: Запускайте .NET приложения с минимально необходимыми привилегиями (принцип Least Privilege), чтобы ограничить ущерб в случае успешной эксплуатации RCE.

Команда для блокировки порта (например, 8080, если на нем работает Remoting) через Windows Firewall:

New-NetFirewallRule -DisplayName "Block NET Remoting" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Block