DEV Community

CVE Reports
CVE Reports

Posted on • Originally published at cvereports.com

CVE-2026-50528: CVE-2026-50528: Security Feature Bypass via State Desynchronization in .NET SslStream

CVE-2026-50528: Security Feature Bypass via State Desynchronization in .NET SslStream

Vulnerability ID: CVE-2026-50528
CVSS Score: 8.2
Published: 2026-07-20

A security feature bypass vulnerability exists in the .NET runtime's SslStream component. The flaw is caused by a state synchronization mismatch during Transport Layer Security (TLS) renegotiation or Post-Handshake Authentication (PHA). When renegotiation with a client fails due to an invalid or missing client certificate, the managed SslStream wrapper fails to invalidate its previously cached authentication properties. Consequently, downstream application logic continues to authorize requests under the context of the original valid identity, leading to incorrect authorization and authentication bypass.

TL;DR

A critical state desynchronization vulnerability in .NET's SslStream allows remote attackers to bypass mutual TLS (mTLS) policies. An attacker authenticates with a valid client certificate, requests renegotiation with an invalid or empty certificate, and relies on the server failing to clear its cached validation credentials to transmit unauthorized payloads over the unauthenticated connection.


Technical Details

  • CWE ID: CWE-863 (Primary), CWE-302, CWE-636
  • Attack Vector: Network
  • CVSS v3.1 Score: 8.2
  • EPSS Score: 0.00436
  • EPSS Percentile: 35.41%
  • Impact: Security Feature Bypass
  • Exploit Status: none
  • KEV Status: Not Listed

Affected Systems

  • .NET 8.0
  • .NET 9.0
  • .NET 10.0
  • Visual Studio 2022
  • .NET 8.0: 8.0.0 to < 8.0.29 (Fixed in: 8.0.29)
  • .NET 9.0: 9.0.0 to < 9.0.18 (Fixed in: 9.0.18)
  • .NET 10.0: 10.0.0 to < 10.0.6 (Fixed in: 10.0.6)
  • Visual Studio 2022 version 17.12: 17.12.0 to < 17.12.22 (Fixed in: 17.12.22)
  • Visual Studio 2022 version 17.14: 17.14.0 to < 17.14.36 (Fixed in: 17.14.36)

Code Analysis

Commit: 9db47f0

Ensure handshake state validation resets cached client certificates and authentication states in SslStream validation during renegotiation and post-handshake sequences.

@@ -242,5 +242,10 @@
- _remoteCertificate = _context.RemoteCertificate;
- _isMutuallyAuthenticated = _context.IsMutuallyAuthenticated;
+ if (!_context.IsValidHandshakeState)
+ {
+     _remoteCertificate = null;
+     _isMutuallyAuthenticated = false;
+     throw new AuthenticationException();
+ }
+ _remoteCertificate = _context.RemoteCertificate;
Enter fullscreen mode Exit fullscreen mode

Commit: 013aa09

Clear stale session credentials inside SslState and enforce verification callback on session resumption.

@@ -512,6 +512,12 @@
- if (sessionResumed)
- {
-     return true;
- }
+ if (sessionResumed && !_verificationEnforced)
+ {
+     EnforceVerificationCallback();
+ }
Enter fullscreen mode Exit fullscreen mode

Mitigation Strategies

  • Upgrade the .NET runtime and SDK packages to the latest patched releases.
  • Restrict supported TLS protocols to TLS 1.3 on all mutually authenticated endpoints to mitigate renegotiation flaws.
  • Implement application-level tracking of connection validation states within callbacks.

Remediation Steps:

  1. Identify all deployment targets utilizing .NET 8.0, 9.0, or 10.0 runtime engines.
  2. Update .NET SDK and hosting bundles to 8.0.29, 9.0.18, or 10.0.6 respectively.
  3. Review custom implementation of RemoteCertificateValidationCallback to ensure it does not bypass verification on resumed sessions.
  4. Apply OS-level transport layer policies to disable client-initiated TLS renegotiation globally on vulnerable servers.

References


Read the full report for CVE-2026-50528 on our website for more details including interactive diagrams and full exploit analysis.

Top comments (0)