CVE-2023-38180
Microsoft .NET Core and Visual Studio
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 года или более поздних.
- Обновление Visual Studio: Откройте Visual Studio Installer и обновите установленные экземпляры до версий:
- Visual Studio 2022 (версии 17.6.6, 17.4.10, 17.2.19)
-
Visual Studio 2019 (версия 16.11.29)
-
Обновление .NET SDK и Runtime: Установите последние патчи для соответствующих версий:
- .NET 7.0.10 (и выше)
- .NET 6.0.21 (и выше)
- .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
Временные меры
Если немедленное обновление невозможно, рекомендуется применить следующие защитные механизмы:
-
Ограничение ресурсов на уровне обратного прокси-сервера (Nginx, IIS, HAProxy): Настройте лимиты на количество одновременных соединений, размер тела запроса и таймауты, чтобы предотвратить исчерпание ресурсов приложения.
-
Настройка 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));
});
- Использование Web Application Firewall (WAF): Настройте правила фильтрации трафика для обнаружения и блокировки аномально высокой частоты запросов с одного IP-адреса (Rate Limiting).