Oct 13, 2026·5 min read·3 visits
Unauthenticated remote requests can trigger inconsistent synchronization lock orders in ASP.NET Core execution paths, leading to permanent thread deadlocks and host application unresponsiveness.
ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.
ASP.NET Core is an open-source, cross-platform web framework for building cloud-based web applications and microservices. CVE-2026-70186 details a high-severity Denial of Service (DoS) flaw caused by a deadlock weakness (CWE-833) within internal ASP.NET Core framework execution paths and bundled Microsoft Visual Studio installations.
The vulnerability is network-accessible and requires no authentication or user interaction. An attacker capable of sending network traffic to an ASP.NET Core service can issue crafted request sequences that trigger concurrent synchronization conflicts within internal runtime execution threads.
Because ASP.NET Core relies on a thread pool model to handle incoming HTTP requests asynchronously, unresolved thread deadlocks consume worker threads permanently. Once thread pool capacity is saturated, the application host becomes unable to accept or process subsequent legitimate HTTP traffic, causing complete service unresponsiveness.
The root cause of CVE-2026-70186 lies in non-deterministic lock acquisition sequences across concurrent asynchronous request handling paths within ASP.NET Core core runtime components. When processing specific request workloads, parallel execution threads contend for shared synchronization handles and stream management objects.
A deadlock condition occurs when execution paths acquire multiple locks in inconsistent order across concurrent threads. For example, Worker Thread 1 obtains Lock A and requests Lock B, while parallel Worker Thread 2 holds Lock B and blocks waiting for Lock A. Because neither thread can complete its operation or release its held synchronization object, thread execution stalls indefinitely.
Under sustained network concurrency targeting the vulnerable code paths, progressive lock contention exhausts available worker threads within the .NET runtime thread pool. The host process remains active but becomes entirely incapable of processing incoming connection requests or completing scheduled asynchronous tasks.
Understanding the execution mechanics of CVE-2026-70186 requires evaluating how ASP.NET Core's request processing pipeline dispatches workloads across thread pool threads under lock contention.
The structural flow of the vulnerability can be visualised as follows:
Unlike vulnerabilities that rely on memory corruption or binary execution takeover, CVE-2026-70186 operates entirely within valid framework logic boundaries. The failure to enforce unified lock ordering or timeout bounds across internal asynchronous synchronization operations leads directly to structural resource exhaustion.
Exploitation of CVE-2026-70186 requires network connectivity to an HTTP or HTTPS endpoint exposed by a vulnerable ASP.NET Core service. Prerequisites such as administrative privileges, application-level authentication, or specialized target environment configurations are not required.
An attacker initiates exploitation by establishing multiple concurrent network connections and transmitting request patterns designed to trigger parallel execution through vulnerable stream or connection management objects. By forcing parallel execution paths into conflicting lock states, the attacker induces thread deadlocks across the host process.
Although public functional exploit code or active exploitation in the wild has not been documented at the time of advisory publication, the low attack complexity (AC:L) and lack of required privileges (PR:N) make unpatched endpoints vulnerable to automated network denial-of-service attempts.
CVE-2026-70186 carries a CVSS v3.1 base score of 7.5 (High), defined by the vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. The score reflects complete loss of system availability without compromising confidentiality or data integrity.
The primary operational impact is application availability failure. When thread pool starvation occurs, the entire ASP.NET Core process stops responding to web traffic, administrative endpoints, and health check probes, causing container orchestrators or load balancers to mark the instance as offline.
> [!NOTE] > Because the flaw exists within framework runtime components, application-level code modifications are insufficient. The underlying ASP.NET Core runtime or SDK installation must be patched directly.
The authoritative remediation for CVE-2026-70186 is upgrading affected ASP.NET Core runtimes, SDKs, and Visual Studio installations to patched release channels. Systems running affected branches must be updated to ASP.NET Core 8.0.32, 9.0.21, or 10.0.13.
Environments utilizing Microsoft Visual Studio should be updated to version 17.14.42 (for Visual Studio 2022) or version 18.10.4 (for Visual Studio 2026) to ensure bundled runtime dependencies are fully remediated. Standalone deployments and container images must be rebuilt using updated framework bases.
In scenarios where immediate patching is delayed, temporary mitigation involves enforcing connection limits and client request timeout thresholds at reverse proxies or web application firewalls (e.g., NGINX, YARP, or IIS) to mitigate aggressive concurrent request bursts.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
ASP.NET Core 8.0 Microsoft | >= 8.0.0, < 8.0.32 | 8.0.32 |
ASP.NET Core 9.0 Microsoft | >= 9.0.0, < 9.0.21 | 9.0.21 |
ASP.NET Core 10.0 Microsoft | >= 10.0.0, < 10.0.13 | 10.0.13 |
Microsoft Visual Studio 2022 Microsoft | >= 17.14.0, < 17.14.42 | 17.14.42 |
Microsoft Visual Studio 2026 Microsoft | >= 18.10.0, < 18.10.4 | 18.10.4 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-833 (Deadlock) |
| CVSS v3.1 Score | 7.5 (High) |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Attack Vector | Network (Unauthenticated) |
| Exploit Status | Unproven / No Public Functional Exploit |
| CISA KEV Status | Not Listed |
| Impact Category | Denial of Service (Thread Starvation) |
An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.
CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.
An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.
A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.
Contao Open Source CMS versions 4.0.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 contain a Cross-Site Request Forgery (CSRF) vulnerability in backend parameter handling. The `RequestTokenListener` component validates anti-CSRF tokens solely for HTTP POST requests, while GET-based declarative guards run only when an `act` parameter is present in the query string. Consequently, custom backend actions dispatched via alternative parameters such as `key=` can execute without CSRF token verification when triggered by an authenticated user.
Contao CMS versions 4.1.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 fail to validate form submission tokens and enforce rate limiting when processing activation email resend requests via HTTP POST, enabling resource exhaustion and account state enumeration.