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·100 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

•2 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

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.

Amit Schendel
Amit Schendel
12 views•5 min read
•3 days ago•CVE-2026-107848
3.5

CVE-2026-107848: Cross-Site Request Forgery (CSRF) in Contao Backend Actions via GET Requests

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.

Amit Schendel
Amit Schendel
9 views•5 min read
•3 days ago•CVE-2026-107843
5.3

CVE-2026-107843: Unthrottled Activation Email Resend and Account Enumeration in Contao CMS

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.

Amit Schendel
Amit Schendel
9 views•4 min read
•3 days ago•CVE-2026-107842
5.3

CVE-2026-107842: Information Disclosure via Stale Indexing in Contao Search Module

An information disclosure vulnerability in Contao CMS allows unauthenticated site visitors to view protected page titles, URLs, and text excerpts through search queries when protected page indexing is disabled after previously being enabled.

Amit Schendel
Amit Schendel
10 views•4 min read
•3 days ago•GHSA-G38J-7V97-X298
6.5

GHSA-G38J-7V97-X298: Missing Authorization Check in Vikunja CalDAV Task Relation Creation

In Vikunja prior to version 2.6.0, relation creation via the CalDAV endpoint fails to invoke the TaskRelation.CanCreate authorization check. This missing access control allows an authenticated user to establish unauthorized relationships and perform write operations against any task, provided its unique identifier (UID) is known.

Alon Barad
Alon Barad
12 views•5 min read
•3 days ago•GHSA-3HC7-R24J-RPWC
6.8

GHSA-3hc7-r24j-rpwc: Cross-Project Task Disclosure via Subtask Expansion in Vikunja

A cross-project information disclosure vulnerability in Vikunja allows authenticated users with read access to one project to view private task details from unauthorized projects via subtask expansion parameters.

Alon Barad
Alon Barad
9 views•5 min read