CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-50651

CVE-2026-50651: Denial of Service via Uncontrolled Resource Allocation in .NET System.Net.Http

Amit Schendel
Amit Schendel
Senior Security Researcher

Jul 21, 2026·6 min read·51 visits

Executive Summary (TL;DR)

Uncontrolled resource allocation in .NET's HTTP/2 implementation (System.Net.Http) allows a malicious server to exhaust client heap memory and trigger an Out-of-Memory (OOM) application crash via infinite or highly fragmented protocol frames.

CVE-2026-50651 is a high-severity Denial of Service vulnerability in Microsoft .NET runtimes, SDKs, and Visual Studio installations. It stems from a weakness in System.Net.Http (CWE-770), where the HTTP/2 connection handling state machine fails to throttle server-initiated protocol streams and control frames. An attacker-controlled server can exploit this by returning highly fragmented or infinite control and continuation frame sequences. This forces the client to allocate memory indefinitely on the managed heap, eventually provoking an unhandled Out-of-Memory (OOM) exception and application crash.

Vulnerability Overview

The System.Net.Http namespace handles the core outbound network communication libraries within the .NET runtime, facilitating robust protocol exchanges including HTTP/1.1 and HTTP/2. The HTTP/2 implementation uses state machines to track concurrent, multiplexed logical streams over a single TCP connection. This complex design shifts a heavy resource-management burden onto the client application.

Under CVE-2026-50651, the .NET client application exposes an attack surface when establishing connection sequences with untrusted or compromised external servers. This vulnerability belongs to the CWE-770 class, representing uncontrolled resource allocation without limits or throttling.

When a client connects to an adversarial server, the server can exploit this implementation flaw to force boundless allocation of heap memory. The lack of strict containment limits inside the connection handling module results in process-level resource exhaustion, causing the client application to crash.

Root Cause Analysis

The vulnerability stems from the absence of global and cumulative resource constraints within the Http2Connection and Http2Stream components of System.Net.Http. When an application initiates a session, the connection manager handles several asynchronous streams, decompressing headers and queuing control frames dynamically.

The first critical flaw lies in the handling of outbound response queues for HTTP/2 control frames. Certain frames, such as PING and SETTINGS, require immediate ACK responses. If a server floods the client with these control frames and simultaneously throttles the TCP connection, the client continues to allocate memory to append outgoing ACK responses to its internal write queue, leading to unbounded memory inflation.

The second major vulnerability vector relates to HPACK decompressor state management and header processing. When parsing incoming HEADER and CONTINUATION frames, the decompressor processes instructions to dynamically adjust the HPACK table state. In vulnerable .NET versions, the client does not enforce strict cumulative length restrictions on split continuation frame sequences, which allows an attacker to stream an endless series of CONTINUATION frames that consume increasingly larger buffers on the heap.

Finally, the connection parser handles canceled or reset streams inefficiently. If a request is aborted, the socket reader must still consume trailing data sent by the server. Instead of reading and discarding this data directly from the network stream, the parser allocates intermediate buffers to parse the discarded bytes, placing extreme pressure on the Garbage Collector.

Code Analysis

The resolution of CVE-2026-50651 involved implementing strict thresholds inside the frame processing loop of Http2Connection.cs and Http2Stream.cs in the .NET runtime repository.

To prevent outbound control frame accumulation, the patch limits the queue depth for pending ACK responses. When processing control frames like PING, the connection state now validates the active length of the outbound write queue before accepting additional data:

// Conceptual representation of the fixed queue tracking
private void QueueAckFrame(Http2Frame frame)
{
    // Check if pending control frame ACK queue has reached safety threshold
    if (_pendingAckQueue.Count >= MaxPendingControlAckQueueDepth)
    {
        // Abort the connection immediately to prevent OOM
        throw new Http2ConnectionException(
            Http2Error.ProtocolError, 
            'Excessive pending control ACKs queued'
        );
    }
    
    _pendingAckQueue.Enqueue(frame);
    TriggerWriteLoop();
}

Additionally, HPACK decompression and continuation sequence processing was reinforced with rigid size limits. The reader loop now validates the total cumulative payload size for any continuous block of CONTINUATION frames that does not terminate with an END_HEADERS flag. If the limits are crossed, the stream is aborted with a protocol error exception.

To optimize handling of closed streams, the socket reader was refactored to perform direct socket-level flushing. Instead of allocating memory buffers to ingest unwanted data from cancelled streams, the runtime calls a Zero-Allocation discard loop that drains the TCP socket directly, bypassing heap allocation entirely.

Attack Methodology and Exploitation Mechanics

Exploitation of CVE-2026-50651 requires the victim client to initiate an HTTP/2 connection to an attacker-controlled endpoint. This is commonly achieved through vectors such as Server-Side Request Forgery (SSRF) vulnerabilities, standard web-scraping activities, or consuming compromised third-party APIs.

Once the TCP connection is established and HTTP/2 is negotiated, the attacker server begins an asymmetric protocol flood. The server does not need to send high volumes of bandwidth. Instead, it can continuously transmit structured control frames or small, highly fragmented CONTINUATION frames while artificially throttling the TCP stream.

Because the client lacks defensive throttling on its dynamic structures, it repeatedly allocates memory to maintain the HPACK state and queue response ACKs. The application memory footprint increases exponentially until the process exhausts available virtual memory, causing the .NET host to execute an unhandled OutOfMemoryException crash.

Impact Assessment

The primary impact of CVE-2026-50651 is client-side denial of service via system resource exhaustion. Because the memory exhaustion occurs within the host .NET runtime process, any critical service or containerized microservice utilizing HttpClient to interact with external systems can be terminated abruptly.

This vulnerability has been assigned a CVSS v3.1 base score of 7.5, reflecting its remote exploitability and high availability impact. Crucially, the exploit requires no privileges and zero user interaction once the outbound request is triggered, elevating the risk profile for server-side .NET applications handling untrusted URLs.

At present, there is no evidence of active exploitation in the wild, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. However, the ease with which a proof-of-concept can be designed makes rapid mitigation essential for systems processing third-party webhook requests or scraping external resources.

Mitigation and Remediation Guidance

Remediation requires updating the .NET hosting environment, SDK, and IDE installations to the patched versions released on July 14, 2026.

For .NET 10.0 environments, systems must run version 10.0.6 or higher. For .NET 9.0 environments, upgrade to 9.0.18 or higher, and for .NET 8.0, upgrade to 8.0.29 or higher. On Linux deployments, run package manager updates to pull the latest runtime binaries.

# Example update command for Ubuntu/Debian hosts
sudo apt-get update && sudo apt-get install --only-upgrade dotnet-runtime-8.0

If immediate patching is unfeasible, developers should enforce HTTP/1.1 fallback policies for HttpClient interactions with external endpoints. This forces the application to bypass the vulnerable HTTP/2 state machine entirely:

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, 'https://untrusted-domain.com/endpoint')
{
    Version = HttpVersion.Version11,
    VersionPolicy = HttpVersionPolicy.RequestVersionExact
};
var response = await client.SendAsync(request);

Official Patches

MicrosoftMicrosoft Security Update Guide for CVE-2026-50651

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
EPSS Probability
0.62%
Top 54% most exploited

Affected Systems

.NET 10.0 (versions < 10.0.6).NET 9.0 (versions < 9.0.18).NET 8.0 (versions < 8.0.29)Microsoft Visual Studio 2022 (version 17.12 < 17.12.22)Microsoft Visual Studio 2022 (version 17.14 < 17.14.36)Microsoft Visual Studio 2026 (version 18.7 < 18.7.4)

Affected Versions Detail

Product
Affected Versions
Fixed Version
.NET 10.0
Microsoft
< 10.0.610.0.6
.NET 9.0
Microsoft
< 9.0.189.0.18
.NET 8.0
Microsoft
< 8.0.298.0.29
AttributeDetail
CWE IDCWE-770
Attack VectorNetwork (AV:N)
CVSS Score7.5 (High)
EPSS Score0.00617 (Percentile: 45.65%)
ImpactEndpoint Denial of Service (System Resource Exhaustion)
Exploit StatusProof of Concept (PoC) available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
T1499.004System Resource Exhaustion
Impact
CWE-770
Allocation of Resources Without Limits or Throttling

The software allocates memory or other resources on behalf of an untrusted actor without enforcing strict thresholds or rate-limiting.

Vulnerability Timeline

Servicing branches for .NET 10 (release/10.0) begin merging dependency rollups and socket-discard optimizations
2026-05-18
Upstream Virtual Mono Repo (VMR) sync pull requests merge core HTTP/2 protocol limitations into dotnet/runtime
2026-06-08
Official public disclosure of CVE-2026-50651 and release of security patches
2026-07-14
National Vulnerability Database updates CVSS metrics and CWE classification
2026-07-20

References & Sources

  • [1]Microsoft Security Update Guide
  • [2]CVE.org Authority Record
  • [3]Wiz Vulnerability Database Profile

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 8 hours ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 9 hours ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
7 views•6 min read
•about 11 hours ago•CVE-2026-73559
6.5

CVE-2026-73559: Uncontrolled Resource Consumption in vLLM API completions

CVE-2026-73559 is an uncontrolled resource consumption vulnerability in the vLLM engine, specifically within the /v1/completions API endpoint, allowing authenticated attackers to cause application-level denial of service via unbounded prompt arrays.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 13 hours ago•CVE-2026-54526
9.9

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Alon Barad
Alon Barad
11 views•6 min read
•about 14 hours ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
5 views•7 min read
•about 15 hours ago•GHSA-RM43-82J9-R4MJ
8.2

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Amit Schendel
Amit Schendel
4 views•6 min read