CVE-2023-36038

8.2 HIGH

📋 TL;DR

This vulnerability in ASP.NET Core allows attackers to cause denial of service by sending specially crafted requests that consume excessive resources. It affects ASP.NET Core applications running on Windows, Linux, and macOS. The vulnerability is exploitable remotely without authentication.

💻 Affected Systems

Products:
  • ASP.NET Core
  • .NET Core
Versions: ASP.NET Core 6.0, 7.0, and .NET Core 3.1
Operating Systems: Windows, Linux, macOS
Default Config Vulnerable: ⚠️ Yes
Notes: All default configurations of affected versions are vulnerable. The vulnerability exists in the Kestrel web server component.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete application unavailability, resource exhaustion leading to server crashes, and potential cascading failures in dependent services.

🟠

Likely Case

Application performance degradation, intermittent service disruptions, and increased resource utilization affecting legitimate users.

🟢

If Mitigated

Minimal impact with proper rate limiting, request filtering, and updated runtime components in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability requires sending specially crafted HTTP requests but does not require authentication or special privileges.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: ASP.NET Core 6.0.24, 7.0.13, and .NET Core 3.1.32

Vendor Advisory: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36038

Restart Required: Yes

Instructions:

1. Identify your ASP.NET Core version. 2. Update to the patched version via package manager (dotnet update, apt-get, yum, etc.). 3. Restart the application and web server. 4. Verify the update was successful.

🔧 Temporary Workarounds

Rate Limiting

all

Implement request rate limiting to prevent excessive resource consumption from single sources.

Use ASP.NET Core middleware like Microsoft.AspNetCore.RateLimiting

Request Size Limits

all

Configure maximum request size limits in Kestrel to prevent large malicious requests.

Configure in Program.cs: builder.WebHost.ConfigureKestrel(options => { options.Limits.MaxRequestBodySize = 1000000; })

🧯 If You Can't Patch

  • Implement web application firewall (WAF) rules to block suspicious request patterns
  • Deploy reverse proxy with request filtering and rate limiting capabilities

🔍 How to Verify

Check if Vulnerable:

Check ASP.NET Core version with: dotnet --info or examine application runtime version

Check Version:

dotnet --info | findstr "Version"

Verify Fix Applied:

Verify installed version is 6.0.24, 7.0.13, or 3.1.32 or higher

📡 Detection & Monitoring

Log Indicators:

  • Unusually high CPU/memory usage spikes
  • Increased error rates in application logs
  • Requests with abnormal patterns or sizes

Network Indicators:

  • Sudden increase in incoming HTTP traffic
  • Requests with unusual headers or payloads

SIEM Query:

source="*aspnet*" AND (cpu_usage>90 OR memory_usage>90) AND http_request_count>1000

🔗 References

📤 Share & Export