CVE-2023-38180

Microsoft .NET Core and Visual Studio

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

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

2023-08-09

Официальное описание

Microsoft .NET Core and Visual Studio contain an unspecified vulnerability that allows for denial-of-service (DoS).

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2023-38180 представляет собой критическую уязвимость типа «Отказ в обслуживании» (Denial of Service, DoS) в средах выполнения .NET и интегрированной среде разработки Visual Studio. Проблема связана с некорректной обработкой входящих данных или запросов, что позволяет злоумышленнику вызвать чрезмерное потребление ресурсов процессора или памяти, приводя к зависанию или аварийному завершению работы приложения. Уязвимость может быть эксплуатирована удаленно без аутентификации, что делает её особенно опасной для публичных веб-сервисов на базе ASP.NET Core.

Как исправить

Основным способом устранения уязвимости является обновление среды выполнения .NET (Runtime) и SDK до актуальных версий, выпущенных в рамках августовского обновления безопасности 2023 года или более поздних.

  1. Обновление Visual Studio: Откройте Visual Studio Installer и обновите установленные экземпляры до версий:
  2. Visual Studio 2022 (версии 17.6.6, 17.4.10, 17.2.19)
  3. Visual Studio 2019 (версия 16.11.29)

  4. Обновление .NET SDK и Runtime: Установите последние патчи для соответствующих версий:

  5. .NET 7.0.10 (и выше)
  6. .NET 6.0.21 (и выше)
  7. .NET Core 3.1 (поддержка завершена, рекомендуется миграция)

Команда для проверки текущей версии в Windows/Linux:

dotnet --info

Команда для обновления .NET на Linux (Ubuntu/Debian):

sudo apt-get update && sudo apt-get upgrade dotnet-sdk-7.0

Команда для обновления через PowerShell (с использованием winget):

winget upgrade Microsoft.DotNet.SDK.7

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

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

  1. Ограничение ресурсов на уровне обратного прокси-сервера (Nginx, IIS, HAProxy): Настройте лимиты на количество одновременных соединений, размер тела запроса и таймауты, чтобы предотвратить исчерпание ресурсов приложения.

  2. Настройка Kestrel (для ASP.NET Core): Установите жесткие лимиты в конфигурации сервера Kestrel для предотвращения DoS-атак. Пример настройки в Program.cs:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxConcurrentConnections = 100;
    serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
    serverOptions.Limits.MinRequestBodyDataRate = new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
});

  1. Использование Web Application Firewall (WAF): Настройте правила фильтрации трафика для обнаружения и блокировки аномально высокой частоты запросов с одного IP-адреса (Rate Limiting).