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



GHSA-6856-87HX-P5X7

CVE-2026-105544: Local Elevation of Privilege in .NET Test Platform CLI

Amit Schendel
Amit Schendel
Senior Security Researcher

Nov 11, 2026·9 min read·5 visits

Executive Summary (TL;DR)

Improper access control (CWE-284) in Microsoft.TestPlatform.CLI and the .NET SDK allows a low-privileged local user to hijack test runner IPC channels or temporary execution artifacts when another user runs a test suite, resulting in local privilege escalation across security boundaries.

CVE-2026-105544 is a high-severity local elevation of privilege vulnerability in Microsoft .NET and Microsoft.TestPlatform.CLI. Improper access control on local inter-process communication mechanisms and execution brokers allows an authorized local attacker to cross security boundaries and execute arbitrary code in the context of a higher-privileged user running a test execution cycle.

Vulnerability Overview

CVE-2026-105544 (tracked also as GHSA-6856-87HX-P5X7) is a local elevation of privilege vulnerability affecting the Microsoft .NET SDK, .NET Runtime environments, and Microsoft Visual Studio. The flaw resides specifically within the Microsoft.TestPlatform.CLI component, which is maintained in the microsoft/vstest repository and bundled across standard .NET SDK distributions on Windows, Linux, and macOS.

The Visual Studio Test Platform (vstest) serves as the primary test execution engine for .NET applications, powering command-line invocations such as dotnet test and vstest.console.exe as well as integrated test runners inside Visual Studio. During a test run, the CLI acts as an orchestration harness that initializes child runner processes, manages test discovery, and brokers results back to the calling user or continuous integration pipeline.

Classified under CWE-284 (Improper Access Control), the vulnerability occurs because the test platform fails to enforce strict access control policies on local communication resources, file handles, or process execution brokers created during a test run. When a legitimate user or automated service executes tests on a multi-user system, a low-privileged local attacker can intercept or manipulate these inadequately protected resources.

Successful exploitation allows the attacker to breach the authorization boundary of the test runner (Scope: Changed) and execute arbitrary code within the security context of the user invoking the test suite. If the invoking user holds administrative privileges or operates as a privileged build agent, the attacker achieves complete compromise of the host's confidentiality, integrity, and availability.

Root Cause Analysis

To isolate test execution from the primary build process and support multiple target frameworks, Microsoft.TestPlatform.CLI employs a distributed process architecture. When a user invokes dotnet test or vstest.console.exe, the parent CLI process spawns isolated child runner processes—most notably testhost.exe (or testhost on POSIX systems) and data collector brokers. The parent process coordinates with these child processes over local Inter-Process Communication (IPC) channels, such as named pipes or local sockets, and exchanges runtime configuration via temporary files on disk.

The root cause of CVE-2026-105544 is the failure to apply restrictive discretionary access control lists (DACLs) on Windows, or restrictive file and socket permissions (chmod/umask) on Linux and macOS, when initializing these IPC endpoints, named kernel objects, or temporary execution artifacts. Because these objects are instantiated with overly permissive access controls, they remain accessible to other local user accounts residing on the same machine.

During the window between test runner initialization and child process connection, an authorized low-privileged local user can interact with the exposed IPC channel or replace temporary runner artifacts. Because the parent vstest process and its child testhost processes implicitly trust data and commands traversing this boundary without secondary caller authentication, the attacker can inject arbitrary test assemblies, manipulate runtime broker configurations, or hijack the IPC stream.

This architectural flaw explains the Scope: Changed (S:C) designation in the CVSS vector. The vulnerable component (Microsoft.TestPlatform.CLI) operates within one security authority, while the vulnerability permits a low-privileged user from a separate security context to cross the OS user boundary and dictate execution inside the target's process space.

Architecture & Access Control Analysis

While Microsoft has not linked the exact line-by-line commit diff in the public MSRC advisory, the mechanics of CWE-284 within the microsoft/vstest and dotnet/sdk architecture follow a well-defined pattern regarding local IPC and temporary file management in .NET.

In vulnerable versions of Microsoft.TestPlatform.CLI (versions >= 17.2.0 and < 18.11.1), communication channels and temporary state directories are established using default operating system security descriptors or predictable paths in shared temporary directories (/tmp on Unix or standard shared folders).

// Conceptual representation of vulnerable IPC initialization in TestPlatform
// Missing explicit PipeSecurity / ACL restrictions allows cross-user connection or pre-creation
var pipeServer = new NamedPipeServerStream(
    pipeName: $"vstest_ipc_{processId}",
    direction: PipeDirection.InOut,
    maxNumberOfServerInstances: 1,
    transmissionMode: PipeTransmissionMode.Byte,
    options: PipeOptions.Asynchronous
);

When NamedPipeServerStream or local temporary configuration files are created without explicit security descriptors (or when a client connects to a named endpoint without verifying the server owner's security identifier), two primary failure modes emerge:

  1. Endpoint Pre-creation / Squatting: If the IPC endpoint name or temporary artifact path is predictable (e.g., derived from process IDs or static GUIDs), a local attacker can pre-create the named pipe or file before the privileged test runner initializes, assuming control over the communication channel.
  2. Unauthorized Client Connection: If the server endpoint does not restrict access exclusively to the CurrentUser or CreatorOwner SID, a local attacker running a tight polling loop can connect to the newly opened vstest IPC server ahead of the legitimate testhost child process.
// Conceptual representation of remediated access control enforcement
var pipeSecurity = new PipeSecurity();
var currentUser = WindowsIdentity.GetCurrent().User;
 
if (currentUser != null)
{
    // Restrict pipe access strictly to the user identity running the test process
    pipeSecurity.AddAccessRule(new PipeAccessRule(
        currentUser,
        PipeAccessRights.FullControl,
        AccessControlType.Allow
    ));
}
 
var pipeServer = NamedPipeServerStreamAcl.Create(
    pipeName: secureRandomPipeName,
    direction: PipeDirection.InOut,
    maxNumberOfServerInstances: 1,
    transmissionMode: PipeTransmissionMode.Byte,
    options: PipeOptions.Asynchronous | PipeOptions.CurrentUserOnly,
    inBufferSize: 0,
    outBufferSize: 0,
    pipeSecurity: pipeSecurity
);

By enforcing PipeOptions.CurrentUserOnly (which translates to FILE_FLAG_FIRST_PIPE_INSTANCE and strict owner verification in modern .NET runtimes) alongside user-isolated temporary directories (permissions 0700 on POSIX), the patched versions (18.11.1 and corresponding .NET SDK releases) ensure that no external local user can read, write, or bind to the test platform's execution channels.

Exploitation Methodology

Exploiting CVE-2026-105544 requires a specific set of operational prerequisites, reflected in its CVSS exploitability metrics (AV:L/AC:H/PR:L/UI:R). First, the attacker must already possess low-privileged code execution on the target host (PR:L), such as a standard user account on a shared development workstation, a multi-tenant build server, or a compromised low-privilege service account.

Second, exploitation requires user interaction (UI:R) and exhibits high attack complexity (AC:H). The attacker cannot trigger the privileged execution independently; instead, a legitimate higher-privileged user or an automated scheduled task running under a privileged account must initiate a test run using a vulnerable version of dotnet test, vstest.console.exe, or Visual Studio.

To overcome the high attack complexity, the attacker typically deploys a local monitoring process that watches for indicators of an impending test run—such as process creation events for dotnet or filesystem activity in shared build directories. Once the target user triggers the test execution pipeline, the attacker's process races the legitimate test runner (testhost) to interact with the improperly secured IPC channel or temporary test configuration files.

By winning this race condition, the attacker supplies a crafted test payload—such as a malicious .dll test assembly, a custom data collector, or a modified .runsettings configuration pointing to an attacker-controlled binary. When the privileged vstest broker processes this input, it loads and executes the attacker's code under the security token of the victim user.

> [!NOTE] > As of the advisory publication date, Microsoft assesses the Exploit Code Maturity for CVE-2026-105544 as Unproven (E:U). No public Proof-of-Concept (PoC) exploits exist on GitHub, ExploitDB, or PacketStorm, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

Impact Assessment

Despite the high attack complexity and the requirement for local access and user interaction, CVE-2026-105544 carries a CVSS v3.1 Base Score of 7.5 (High) due to its severe post-exploitation impact across security boundaries (S:C/C:H/I:H/A:H).

In enterprise software development and CI/CD environments, build servers and shared developer machines frequently host multiple user contexts. Self-hosted CI/CD runners (such as GitHub Actions runners, Azure DevOps agents, or Jenkins nodes) often execute dotnet test workflows to validate code commits. If an attacker compromises a low-privileged service or gains access to an unprivileged build worker on the same physical or virtual host, they can leverage CVE-2026-105544 to pivot into higher-privileged build pipelines or administrative user sessions.

Once arbitrary code execution is achieved in the context of the target user:

  • Confidentiality (C:H): The attacker gains full read access to sensitive source code, code-signing certificates, cloud deployment credentials, NuGet API keys, and environment variables accessible to the privileged user or CI/CD agent.
  • Integrity (I:H): The attacker can modify compiled build artifacts, inject backdoors into production release packages (supply chain compromise), or alter system-wide configurations if the victim holds administrative rights.
  • Availability (A:H): The attacker can terminate critical services, corrupt local repositories, or render the host inoperable.

Remediation & Mitigation

Microsoft has addressed CVE-2026-105544 by releasing security updates across all supported .NET branches, Visual Studio versions, and the standalone Microsoft.TestPlatform.CLI NuGet package. Organizations must update their development workstations, build servers, and container base images to the patched releases listed below.

Product / ComponentAffected VersionsPatched Version
Microsoft.TestPlatform.CLI>= 17.2.0, < 18.11.118.11.1
.NET 8.0 SDK>= 8.0.0, < 8.0.4288.0.428 (or 8.0.134)
.NET 9.0 SDK>= 9.0.0, < 9.0.3219.0.321 (or 9.0.124)
.NET 10.0 SDK>= 10.0.0, < 10.0.40410.0.404 (or 10.0.115)
.NET 11.0 SDK>= 11.0.0-preview.1, < 11.0.10011.0.100
Visual Studio 202217.14 (< 17.14.45)17.14.45
Visual Studio 2026 (18.11)18.11 (< 18.11.4)18.11.4
Visual Studio 2026 (18.12)18.12 (< 18.12.0)18.12.0

In addition to upgrading the .NET SDK and Visual Studio installations on hosts, development teams must audit their project files (.csproj, Directory.Packages.props, and packages.lock.json) and .config/dotnet-tools.json manifests. If a project explicitly pins Microsoft.TestPlatform.CLI or Microsoft.NET.Test.Sdk to a vulnerable version below 18.11.1, the NuGet package reference must be updated so the build pipeline does not pull vulnerable test runner binaries during package restore.

<!-- Ensure explicit references in .csproj or Directory.Packages.props use 18.11.1 or higher -->
<ItemGroup>
  <PackageReference Include="Microsoft.TestPlatform.CLI" Version="18.11.1" />
</ItemGroup>

Where immediate patching is not feasible on multi-user build systems, administrators should enforce strict environment isolation:

  • Avoid running dotnet test or Visual Studio under administrative or SYSTEM / root accounts.
  • Configure per-user isolated temporary directories (TMP, TEMP, TMPDIR) with 0700 permissions (or strict user-only NTFS ACLs) so that other local accounts cannot access temporary test runner artifacts.
  • Transition shared CI/CD build agents to ephemeral, single-tenant containers or virtual machines that are destroyed immediately after each build job completes.

Official Patches

MicrosoftOfficial Microsoft Security Response Center (MSRC) Advisory for CVE-2026-105544
GitHub / Microsoft.NET SDK v8.0.428 Release
GitHub / Microsoft.NET SDK v8.0.134 Release
GitHub / Microsoft.NET SDK v9.0.321 Release
GitHub / Microsoft.NET SDK v9.0.124 Release
GitHub / Microsoft.NET SDK v10.0.404 Release
GitHub / Microsoft.NET SDK v10.0.115 Release
GitHub / Microsoft.NET SDK v11.0.100 Release

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H

Affected Systems

Microsoft.TestPlatform.CLIMicrosoft .NET 8.0 SDK / RuntimeMicrosoft .NET 9.0 SDK / RuntimeMicrosoft .NET 10.0 SDK / RuntimeMicrosoft .NET 11.0 SDK / RuntimeMicrosoft Visual Studio 2022Microsoft Visual Studio 2026

Affected Versions Detail

Product
Affected Versions
Fixed Version
Microsoft.TestPlatform.CLI
Microsoft
>= 17.2.0, < 18.11.118.11.1
.NET 8.0
Microsoft
>= 8.0.0, < 8.0.4288.0.428 (SDK 8.0.134 / 8.0.428)
.NET 9.0
Microsoft
>= 9.0.0, < 9.0.3219.0.321 (SDK 9.0.124 / 9.0.321)
.NET 10.0
Microsoft
>= 10.0.0, < 10.0.40410.0.404 (SDK 10.0.115 / 10.0.404)
.NET 11.0
Microsoft
>= 11.0.0-preview.1, < 11.0.10011.0.100
Microsoft Visual Studio 2022
Microsoft
17.14, < 17.14.4517.14.45
Microsoft Visual Studio 2026
Microsoft
18.11, < 18.11.418.11.4
Microsoft Visual Studio 2026
Microsoft
18.12, < 18.12.018.12.0
AttributeDetail
CVE IDCVE-2026-105544 (GHSA-6856-87HX-P5X7)
Weakness ClassCWE-284: Improper Access Control
CVSS v3.1 Score7.5 High (AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H)
Attack VectorLocal (Requires Low Privileges & User Interaction)
Security ImpactLocal Elevation of Privilege across Security Boundaries (S:C)
Affected ComponentMicrosoft.TestPlatform.CLI (.NET SDK & Visual Studio)
Exploit StatusUnproven (E:U) / No Public PoCs
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1068Exploitation for Privilege Escalation
Defense Evasion
T1204.002User Execution: Malicious File
Execution
CWE-284
Improper Access Control

The software does not restrict or incorrectly restricts access to a resource from an unauthorized actor, allowing attackers to bypass security boundaries and manipulate inter-process communication or temporary execution artifacts.

Vulnerability Timeline

CVE-2026-105544 published by Microsoft CNA and GitHub Advisory Database (GHSA-6856-87HX-P5X7)
2026-11-10
CISA KEV catalog verified; vulnerability confirmed not listed under active exploitation
2026-11-10
Vulnerability analyzed and published in the National Vulnerability Database (NVD)
2026-11-10
CVE record updated with full version range boundaries and official MSRC patch links
2026-11-10

References & Sources

  • [1]Microsoft Security Response Center (MSRC) - CVE-2026-105544
  • [2]GitHub Advisory Database - GHSA-6856-87HX-P5X7
  • [3]CVE.org Record - CVE-2026-105544
  • [4]Shodan CVEDB - CVE-2026-105544
  • [5].NET SDK v8.0.428 Release Notes
  • [6].NET SDK v9.0.321 Release Notes
  • [7].NET SDK v10.0.404 Release Notes
  • [8].NET SDK v11.0.100 Release Notes

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 minutes ago•CVE-2026-114158
8.8

CVE-2026-114158: Heap-Based Buffer Overflow in Microsoft.DiaSymReader.Native Portable PDB Parser

CVE-2026-114158 is a high-severity remote code execution vulnerability affecting Microsoft Visual Studio 2026 and multiple supported servicing branches of Microsoft .NET (.NET 8.0, 9.0, 10.0, and 11.0) on Windows. The flaw resides in the native symbol reader library, Microsoft.DiaSymReader.Native, and is triggered when parsing Portable Program Database (PDB) metadata containing malformed EmbeddedSource custom debug information records. By supplying a parent Record Identifier (RID) of zero or an out-of-bounds value, an attacker causes an integer underflow during 1-based to 0-based index conversion, leading to a heap-based buffer overflow and arbitrary code execution within the context of the host developer tool or runtime.

Amit Schendel
Amit Schendel
0 views•10 min read
•about 1 hour ago•CVE-2026-114151
8.8

CVE-2026-114151: Remote Code Execution via Stack-Based Buffer Overflow in Microsoft Visual Studio and .NET Symbol Reader

CVE-2026-114151 is a high-severity remote code execution vulnerability affecting Microsoft Visual Studio 2026 and multiple supported versions of the Microsoft .NET runtime on Windows. The flaw resides in the native Debug Information Access (DIA) symbol reader component, Microsoft.DiaSymReader.Native. When parsing Program Database (.pdb) files, the component fails to validate the length of serialized numeric records (specifically LF_DECIMAL structures) before unpacking them into a fixed-size stack buffer. An attacker who convinces a user or automated diagnostic process to load a crafted .pdb file can trigger a stack-based buffer overflow, resulting in arbitrary code execution within the context of the host process.

Alon Barad
Alon Barad
2 views•9 min read
•about 4 hours ago•CVE-2026-114152
8.8

CVE-2026-114152: Stack-Based Buffer Overflow and Untrusted Pointer Dereference in Microsoft DiaSymReader.Native

CVE-2026-114152 is a high-severity remote code execution vulnerability affecting Microsoft Visual Studio 2026 and multiple servicing branches of the Microsoft .NET runtime (.NET 8.0, 9.0, 10.0, and 11.0) on Windows platforms. The vulnerability exists within the native symbol reader library, Microsoft.DiaSymReader.Native, specifically inside the DiaObjectFile::ApplyFixup method during the processing of Common Object File Format (COFF) relocation records. By supplying a malformed object file or Program Database (PDB) symbol file containing out-of-bounds relocation offsets or invalid symbol table indices, an unauthenticated attacker can trigger an untrusted pointer dereference (CWE-822) and a stack-based buffer overflow (CWE-121). Successful exploitation occurs when a victim opens, compiles, or debugs a malicious project or symbol artifact, leading to arbitrary code execution within the security context of the active developer environment or build process.

Amit Schendel
Amit Schendel
5 views•11 min read
•about 5 hours ago•CVE-2026-118745
8.8

CVE-2026-118745: Remote Code Execution via Heap-Based Buffer Overflow in Microsoft Visual Studio and .NET DiaSymReader

CVE-2026-118745 is a high-severity remote code execution vulnerability affecting Microsoft Visual Studio 2026 and multiple supported versions of the .NET runtime (8.0, 9.0, 10.0, and 11.0) on Windows systems. The flaw is a heap-based buffer overflow (CWE-122) located within the native symbol reading library, Microsoft.DiaSymReader.Native, specifically in the routines responsible for extracting and parsing Program Database (.pdb) line number metadata. An attacker can exploit this vulnerability by supplying a crafted .pdb file alongside a repository, project, or compiled binary. When a developer or automated diagnostic process parses the malformed debug symbols, an out-of-bounds heap write occurs, permitting arbitrary code execution within the security context of the active user process.

Amit Schendel
Amit Schendel
8 views•10 min read
•about 6 hours ago•CVE-2026-109481
7.5

CVE-2026-109481: Cross-Site Request Forgery Leading to Elevation of Privilege in ASP.NET Core

CVE-2026-109481 is a high-severity Cross-Site Request Forgery (CSRF) vulnerability in the ASP.NET Core Blazor Server and interactive component architecture. The flaw exists within the internal circuit state synchronization endpoint (`/_blazor/refresh`), which fails to enforce antiforgery token validation or verify cross-origin request headers. By inducing an authenticated victim to issue a cross-site request targeting a pre-allocated circuit identifier, an unauthenticated attacker can bind the victim's security principal to the attacker's active SignalR circuit, resulting in full privilege elevation within the application scope.

Amit Schendel
Amit Schendel
6 views•9 min read
•about 7 hours ago•CVE-2026-126187
9.5

CVE-2026-126187: Unauthenticated Remote Code Execution in React Server Components

A critical deserialization vulnerability exists in React Server Components (RSC) packages (`react-server-dom-webpack`, `react-server-dom-parcel`, and `react-server-dom-turbopack`) across versions 19.0.0 through 19.3.0. The flaw occurs during the processing of React Flight protocol streams when handling multiple typed arrays sharing a backing ArrayBuffer alongside attacker-controlled inputs. By combining byte-stream buffer detachment semantics with unvalidated thenable invocation and exposed internal response states, an unauthenticated attacker can achieve remote code execution on server runtimes supporting React Server Components.

Alon Barad
Alon Barad
25 views•11 min read