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-114156

CVE-2026-114156: Path Equivalence Security Feature Bypass in Microsoft ASP.NET Core

Amit Schendel
Amit Schendel
Senior Security Researcher

Nov 11, 2026·8 min read·1 visit

Executive Summary (TL;DR)

An improper path equivalence resolution flaw in ASP.NET Core (.NET 11.0 preview builds) allows unauthenticated remote attackers to bypass path-based security controls using alternate or encoded path delimiters. Updating to .NET 11.0.0 GA or Visual Studio 2026 version 18.12.0 resolves the issue.

CVE-2026-114156 is an improper resolution of path equivalence vulnerability (CWE-41) in Microsoft ASP.NET Core affecting .NET 11.0 preview releases and Microsoft Visual Studio 2026. The vulnerability stems from a discrepancy between how path prefix validation helpers (such as PathString.StartsWithSegments) and downstream routing mechanisms handle alternate path separators and percent-encoded characters. An unauthenticated remote attacker can exploit this mismatch over the network to bypass path-based authorization middleware and access restricted endpoints.

Vulnerability Overview

Microsoft ASP.NET Core provides a modular HTTP request pipeline where middleware components inspect, modify, or short-circuit incoming requests before they reach terminal routing endpoints. A common architectural pattern involves inspecting the request URI path within custom middleware to enforce authentication, authorization, or rate-limiting policies on specific route prefixes, such as /admin or /internal. To facilitate this, the framework exposes the Microsoft.AspNetCore.Http.PathString struct and its associated segment-matching methods.

CVE-2026-114156 is a security feature bypass vulnerability classified under CWE-41 (Improper Resolution of Path Equivalence). The defect resides in how ASP.NET Core HTTP path evaluation helpers validate segment boundaries when requests contain non-standard path delimiters or percent-encoded characters, specifically within .NET 11.0 preview builds (>= 11.0.0-preview.1, < 11.0.0) and associated Microsoft Visual Studio 2026 releases.

When an application relies on prefix-matching methods like PathString.StartsWithSegments to gate access to restricted areas, an attacker can supply an equivalent path representation using encoded backslashes (%5C) or mixed directory separators. The prefix validation check evaluates to false, allowing the request to bypass the security middleware. Downstream routing or reverse proxy components subsequently normalize the path, resolving it to the protected target endpoint.

Root Cause Analysis

The root cause of CVE-2026-114156 is a canonicalization discrepancy—often referred to as an impedance mismatch—between early-stage path evaluation methods and late-stage route dispatching within the ASP.NET Core request processing pipeline. In the HTTP specification (RFC 3986), the forward slash (/) is the standard path segment delimiter. However, Windows-based file systems, legacy web servers (such as IIS), and certain reverse proxies treat the backslash (\) or its percent-encoded equivalent (%5C / %5c) as interchangeable with the forward slash.

Within the ASP.NET Core HTTP abstractions layer, PathString.StartsWithSegments is designed to verify whether a request path begins with a given prefix on a strict segment boundary. For example, checking if a path starts with /admin must match /admin and /admin/users, but must not match /administrator. To enforce this, the method verifies that the character immediately following the matched prefix is either the end of the string or a forward slash delimiter (/).

When an incoming request contains a percent-encoded backslash (e.g., /admin%5Cusers) or an unnormalized literal backslash, PathString.StartsWithSegments inspects the character following /admin. If the method evaluates the raw or partially decoded string where \ is not recognized as a valid segment boundary, it treats admin\users as a single contiguous segment (similar to administrator). Consequently, StartsWithSegments("/admin") returns false.

Once the request passes the middleware guard without triggering the authorization requirement, it reaches the endpoint routing middleware, static file provider, or an upstream/downstream proxy layer that performs full path normalization. This downstream component converts \ or %5C into a standard / delimiter and dispatches the request directly to the /admin/users handler.

Code Analysis

In ASP.NET Core applications, developers frequently write custom middleware to apply security policies across groups of endpoints before the routing table is evaluated. The vulnerable pattern involves branching security logic based on the boolean return value of PathString.StartsWithSegments.

// Vulnerable Middleware Pattern in ASP.NET Core
app.Use(async (context, next) =>
{
    // Developer attempts to restrict access to all routes under /admin
    if (context.Request.Path.StartsWithSegments("/admin", out var remainingPath))
    {
        if (!context.User.Identity?.IsAuthenticated ?? true)
        {
            context.Response.StatusCode = StatusCodes.Status401Unauthorized;
            return;
        }
        
        if (!context.User.IsInRole("Administrator"))
        {
            context.Response.StatusCode = StatusCodes.Status403Forbidden;
            return;
        }
    }
 
    // If StartsWithSegments returns false, execution continues unchallenged
    await next(context);
});

Inside the PathString implementation, segment boundary validation historically checked only for the standard forward slash / character after confirming the prefix characters matched:

// Conceptual representation of the vulnerable boundary check
public bool StartsWithSegments(PathString other, StringComparison comparisonType, out PathString remaining)
{
    var value1 = Value ?? string.Empty;
    var value2 = other.Value ?? string.Empty;
 
    if (value1.StartsWith(value2, comparisonType))
    {
        // Vulnerable assumption: only '/' is checked as a valid segment delimiter.
        // If value1[value2.Length] is '\' (decoded from %5C), this check fails.
        if (value1.Length == value2.Length || value1[value2.Length] == '/')
        {
            remaining = new PathString(value1.Substring(value2.Length));
            return true;
        }
    }
    remaining = PathString.Empty;
    return false;
}

To remediate this class of vulnerability, the HTTP request pipeline and path manipulation primitives in .NET 11.0.0 GA were updated to enforce consistent path canonicalization and delimiter handling across Kestrel, HTTP.sys, IIS integration, and PathString evaluation. Additionally, architectural guidance requires binding authorization directly to resolved endpoints rather than inspecting uncanonicalized path prefixes:

// Secure Pattern: Endpoint-bound authorization policy
app.MapGroup("/admin")
   .RequireAuthorization("AdminPolicy")
   .MapGet("/users", () => Results.Ok(GetUsers()));

By attaching .RequireAuthorization() to the route group or endpoint definition, the authorization check executes only after the routing engine has normalized the path and matched the exact terminal handler, eliminating the possibility of a desynchronization bypass.

Exploitation

Exploiting CVE-2026-114156 requires no authentication (PR:N) and no user interaction (UI:N), though it is rated as having High Attack Complexity (AC:H). The complexity rating reflects that the target application must be configured in a specific manner: it must rely on path-prefix checks (such as custom middleware using PathString.StartsWithSegments) rather than endpoint routing authorization, and it must operate behind a web server or pipeline configuration that normalizes alternate path separators downstream.

An attacker initiates exploitation by identifying a protected route prefix (e.g., /admin/config or /api/internal/export) that returns 401 Unauthorized or 403 Forbidden when accessed directly via standard HTTP requests.

GET /admin/config HTTP/1.1
Host: vulnerable-target.example.com
 
HTTP/1.1 403 Forbidden

The attacker then crafts an HTTP request replacing the segment delimiter immediately following the protected prefix with a percent-encoded backslash (%5C or %5c), or mixes path traversal sequences that resolve equivalently in the backend dispatcher:

GET /admin%5Cconfig HTTP/1.1
Host: vulnerable-target.example.com
 
HTTP/1.1 200 OK
Content-Type: application/json

When the server receives GET /admin%5Cconfig, the request parsing layer decodes %5C into \ (or leaves it unnormalized depending on the hosting model). The custom authorization middleware executes Request.Path.StartsWithSegments("/admin"). Because the character at index 6 is \ rather than /, the method returns false. The middleware assumes the request targets an unrelated public route and invokes await next(context). The downstream router then normalizes \ to / and executes the /admin/config controller action.

> [!NOTE] > As of the vulnerability publication date, Microsoft classifies exploit code maturity as Unproven (E:U), and no standalone weaponized PoCs have been published in public exploit databases.

Impact Assessment

The primary impact of CVE-2026-114156 is a high loss of integrity (I:H) and a low loss of confidentiality (C:L), resulting in a CVSS v3.1 base score of 6.5 (Medium). Because the vulnerability is a security feature bypass rather than a direct memory corruption or code execution flaw, the exact operational impact is governed by the functionality exposed by the unprotected downstream endpoints.

In scenarios where applications use middleware prefix checks to protect state-changing administrative operations—such as user management, configuration updates, or data deletion—an unauthenticated attacker can invoke these endpoints directly, leading to a high integrity impact. Similarly, attackers can read restricted application data exposed by bypassed endpoints, accounting for the confidentiality impact.

Availability is not directly impacted (A:N) by the path resolution mechanism itself, unless an exposed administrative endpoint explicitly provides system shutdown or resource-exhaustion functionality.

From a threat intelligence perspective, CVE-2026-114156 affects preview builds of .NET 11.0 (>= 11.0.0-preview.1, < 11.0.0) across Linux, macOS, and Windows platforms, as well as early builds of Visual Studio 2026 prior to 18.12.0. Because affected versions are limited to pre-release SDK and runtime distributions prior to the .NET 11.0.0 General Availability (GA) release, production exposure is confined to organizations deploying preview frameworks in internet-facing environments.

Remediation

Microsoft addressed CVE-2026-114156 in the official General Availability release of .NET 11.0 (11.0.0) and Microsoft Visual Studio 2026 version 18.12.0. Organizations running any .NET 11.0.0-preview.* or .NET 11.0.0-rc.* builds on Linux, macOS, or Windows must upgrade their SDKs, ASP.NET Core runtimes, and hosting bundles to version 11.0.0 or later.

For environments where immediate runtime patching is delayed, security teams can mitigate the vulnerability through architectural and infrastructure changes. First, developers should audit application source code for custom middleware utilizing Request.Path.StartsWithSegments, Request.Path.Value.StartsWith, or regular expressions for security enforcement. These checks should be replaced with ASP.NET Core's built-in Endpoint Routing authorization (RequireAuthorization() or [Authorize] attributes), which binds access control directly to the resolved endpoint metadata.

Second, edge reverse proxies (such as Nginx, Envoy, YARP, or IIS) and Web Application Firewalls (WAFs) should be configured to strictly canonicalize incoming request URIs before forwarding traffic to Kestrel backends. Specifically, edge proxies should reject or normalize requests containing literal backslashes (\) or percent-encoded backslashes (%5C, %5c) within the URI path component.

# Example Nginx configuration block to reject encoded backslashes in URI paths
if ($request_uri ~* "%5c") {
    return 400;
}

Implementing strict URI validation at the network perimeter prevents path equivalence payloads from reaching the ASP.NET Core middleware pipeline.

Official Patches

MicrosoftMicrosoft Security Update Guide Advisory for CVE-2026-114156
Microsoft / .NETOfficial ASP.NET Core 11.0.0 Release Artifacts

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N

Affected Systems

Microsoft .NET 11.0 (Linux, macOS, Windows)Microsoft ASP.NET Core 11.0Microsoft Visual Studio 2026

Affected Versions Detail

Product
Affected Versions
Fixed Version
.NET 11.0 (Linux, macOS, Windows)
Microsoft
>= 11.0.0-preview.1, < 11.0.011.0.0
Microsoft Visual Studio 2026
Microsoft
< 18.12.018.12.0
AttributeDetail
Vulnerability IDCVE-2026-114156
Weakness ClassCWE-41 (Improper Resolution of Path Equivalence)
CVSS v3.1 Score6.5 Medium (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N)
Attack VectorNetwork (Unauthenticated HTTP Request)
Primary ImpactSecurity Feature Bypass (High Integrity, Low Confidentiality)
Affected ComponentASP.NET Core Path Processing (PathString.StartsWithSegments)
Exploit StatusUnproven (No Public PoCs)
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1211Exploitation for Defense Evasion
Defense Evasion
T1190Exploit Public-Facing Application
Initial Access
CWE-41
Improper Resolution of Path Equivalence

The software is vulnerable when two or more paths point to the same resource (path equivalence), but the software fails to canonicalize or resolve them equivalently before applying security checks.

Vulnerability Timeline

CVE-2026-114156 published by Microsoft CNA and NVD; official fixes released in .NET 11.0.0.
2026-11-10
CVE record metadata and CVSS metrics updated.
2026-11-11

References & Sources

  • [1]Microsoft Security Update Guide Advisory: CVE-2026-114156
  • [2]CVE.org Official Record: CVE-2026-114156
  • [3]Official ASP.NET Core v11.0.0 Release
  • [4]CWE-41: Improper Resolution of Path Equivalence
  • [5]Shodan CVEDB Entry: CVE-2026-114156
  • [6]MITRE ATT&CK T1211: Exploitation for Defense Evasion
  • [7]MITRE ATT&CK T1190: Exploit Public-Facing Application

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 2 hours ago•CVE-2026-114157
7.5

CVE-2026-114157: Local Privilege Escalation via Race Condition in ASP.NET Core Kestrel Named Pipes Transport

CVE-2026-114157 is a high-severity local privilege escalation and security feature bypass vulnerability affecting ASP.NET Core on Microsoft Windows. The flaw resides in the Kestrel web server's Named Pipes transport layer (Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes) and stems from a race condition (CWE-362) during broken pipe error recovery. When an active connection throws an IOException during handshake acceptance, the connection listener previously disposed of the broken NamedPipeServerStream instance before acquiring a replacement stream from its internal pool. This sequence created a momentary window where zero server instances of the named pipe existed in the Windows Named Pipe File System (NPFS). A local, low-privileged attacker can exploit this timing window to create a named pipe with the identical name and a permissive Discretionary Access Control List (DACL), hijacking subsequent inter-process communications and escalating privileges across security boundaries.

Amit Schendel
Amit Schendel
4 views•11 min read
•about 2 hours ago•CVE-2026-124194
6.5

CVE-2026-124194: Forced Authentication and NetNTLMv2 Credential Leakage in Microsoft Office Outlook

CVE-2026-124194 is a forced authentication and spoofing vulnerability in Microsoft Office Outlook caused by a missing user interface warning before dereferencing remote network paths (CWE-356). By embedding an attacker-controlled Universal Naming Convention (UNC) path within MAPI message properties such as PidLidReminderFileParameter, an unauthenticated remote attacker can force a victim's system to initiate an outbound SMB or WebDAV connection upon opening or previewing a crafted message. This automatic authentication handshake leaks the user's NetNTLMv2 hash, enabling offline password cracking or real-time NTLM relay attacks. The vulnerability was exploited in the wild as a zero-day prior to its remediation in Microsoft's November 2026 Patch Tuesday updates and is listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

Alon Barad
Alon Barad
9 views•10 min read
•about 2 hours ago•CVE-2026-114154
7.5

CVE-2026-114154: Denial of Service in ASP.NET Core HttpSys Request Header Processing

CVE-2026-114154 is a high-severity Denial of Service (DoS) and uncontrolled resource consumption vulnerability in the Microsoft.AspNetCore.Server.HttpSys component of ASP.NET Core. When processing an HTTP request that simultaneously contains a chunked Transfer-Encoding header, a Content-Length header, and an explicit X-Content-Length header, the server throws an unhandled ArgumentException during header normalization. In certain versions, subsequent exception handling attempts to dereference a disposed native request context, aborting error response dispatch and leaking unmanaged HTTP.sys request structures.

Amit Schendel
Amit Schendel
4 views•9 min read
•about 4 hours ago•CVE-2026-120778
7.3

CVE-2026-120778: Local Elevation of Privilege via Insecure Temporary Directory Handling and MSBuild Response File Hijacking in Microsoft .NET Aspire CLI

A local elevation of privilege vulnerability exists in the Microsoft .NET Aspire CLI (`Aspire.Cli`) versions 13.5.4 prior to 13.6.5. When executing SDK management commands (`aspire sdk generate`, `aspire sdk dump`, and `aspire sdk export`), the CLI creates temporary project directories inside the shared operating system temporary folder (such as `/tmp` on Unix-like systems) without restricting directory permissions or disabling MSBuild automatic response file resolution. A local, low-privileged attacker on a multi-user system can place a crafted `Directory.Build.rsp` file in the shared temporary directory hierarchy. When a victim user executes an affected Aspire CLI command, MSBuild traverses upward, ingests the attacker-controlled response file, and executes arbitrary commands in the security context of the victim user.

Alon Barad
Alon Barad
4 views•10 min read
•about 5 hours ago•CVE-2026-120792
7.3

CVE-2026-120792: Local Information Disclosure via Temporary File Logging in Microsoft .NET Aspire CLI

CVE-2026-120792 is a high-severity local information disclosure vulnerability in the Microsoft .NET Aspire CLI (Aspire.Cli) affecting versions 13.5.4 prior to 13.6.5. The flaw stems from the insertion of sensitive information into a shared temporary log file (CWE-532) combined with insecure temporary file creation (CWE-377) within the DeprecatedMcpCommandScanner component. During agent configuration scanning, the CLI unconditionally appends internal workspace paths and the first 200 characters of Model Context Protocol (MCP) agent configuration files to a statically named file in the system temporary directory. On multi-user systems, unprivileged local users can read this file to harvest API keys, authentication tokens, and internal service endpoints.

Alon Barad
Alon Barad
4 views•9 min read
•about 5 hours ago•CVE-2026-114159
8.8

CVE-2026-114159: Heap-Based Buffer Overflow in Microsoft Visual Studio and .NET Native Symbol Reader

CVE-2026-114159 is a heap-based buffer overflow vulnerability (CWE-122) in Microsoft.DiaSymReader.Native affecting Microsoft Visual Studio and the .NET Runtime on Windows. An integer truncation error during the parsing of oversized document names in Portable PDB symbol files causes an undersized heap allocation, leading to an out-of-bounds memory write and remote code execution.

Alon Barad
Alon Barad
6 views•10 min read