Microsoft is releasing this security advisory to provide information about a vulnerability in .NET. This advisory provides guidance on updating affected applications and components.
The VSTest artifact postprocessor can consume a forged executionComplete.json from another local user and execute attacker-controlled output handling.
Announcement for this issue can be found at https://github.com/dotnet/announcements/issues/517
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H/E:U/RL:O/RC:CThe tables list affected versions of Microsoft.TestPlatform.CLI and their patched versions. The VSTest CLI is also bundled in the .NET SDK; SDK versions are listed separately below. Updating a separately installed CLI package does not replace the SDK-bundled test runner.
Microsoft.TestPlatform.CLI is affected starting with 17.2.0-preview-20220301-01, including the first stable release, 17.2.0. Use a patched version listed below for a compatible servicing line.
Package | Affected version | Patched version --- | --- | --- Microsoft.TestPlatform.CLI | >= 17.2.0-preview-20220301-01, < 17.3.0 | 17.3.4 Microsoft.TestPlatform.CLI | = 17.3.0 | 17.3.4 Microsoft.TestPlatform.CLI | = 17.3.1 | 17.3.4 Microsoft.TestPlatform.CLI | = 17.3.2 | 17.3.4 Microsoft.TestPlatform.CLI | = 17.3.3 | 17.3.4 Microsoft.TestPlatform.CLI | = 17.8.0 | 17.8.1 Microsoft.TestPlatform.CLI | = 17.11.0 | 17.11.2 Microsoft.TestPlatform.CLI | = 17.11.1 | 17.11.2 Microsoft.TestPlatform.CLI | = 17.12.0 | 17.12.1 Microsoft.TestPlatform.CLI | = 17.14.0 | 17.14.2 Microsoft.TestPlatform.CLI | = 17.14.1 | 17.14.2 Microsoft.TestPlatform.CLI | = 18.0.0 | 18.0.2 Microsoft.TestPlatform.CLI | = 18.0.1 | 18.0.2 Microsoft.TestPlatform.CLI | = 18.7.0 | 18.7.1 Microsoft.TestPlatform.CLI | = 18.10.0 | 18.10.2 Microsoft.TestPlatform.CLI | = 18.10.1 | 18.10.2 Microsoft.TestPlatform.CLI | = 18.11.0 | 18.11.1
Stable 18.10.1 remains affected; use Microsoft.TestPlatform.CLI 18.10.2 on that servicing line.
Package | Affected version | Patched version --- | --- | --- Microsoft.TestPlatform.CLI | = 17.4.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.4.1 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.5.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.6.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.6.1 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.6.2 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.6.3 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.7.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.7.1 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.7.2 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.9.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.10.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 17.13.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.3.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.4.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.5.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.5.1 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.6.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.8.0 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.8.1 | Use a compatible patched version listed above Microsoft.TestPlatform.CLI | = 18.9.0 | Use a compatible patched version listed above
These releases have no same-line fixed package in this update. Move to a compatible fixed servicing line listed above.
The following table applies to Microsoft.TestPlatform.CLI.
Affected version | Patched version --- | --- = 17.3.0-preview-20220426-02 | Use a compatible patched version listed above = 17.3.0-preview-20220530-08 | Use a compatible patched version listed above = 17.3.0-preview-20220612-01 | Use a compatible patched version listed above = 17.4.0-preview-20220707-01 | Use a compatible patched version listed above = 17.4.0-preview-20220726-02 | Use a compatible patched version listed above = 17.4.0-preview-20221003-03 | Use a compatible patched version listed above = 17.4.0-release-20220926-01 | Use a compatible patched version listed above = 17.5.0-preview-20221003-04 | Use a compatible patched version listed above = 17.5.0-preview-20221221-03 | Use a compatible patched version listed above = 17.6.0-preview-20230223-05 | Use a compatible patched version listed above = 17.7.0-preview-23364-03 | Use a compatible patched version listed above = 17.7.0-preview.23280.1 | Use a compatible patched version listed above = 17.8.0-preview-23371-04 | Use a compatible patched version listed above = 17.8.0-preview-23424-02 | Use a compatible patched version listed above = 17.8.0-release-23468-02 | Use a compatible patched version listed above = 17.9.0-preview-23503-02 | Use a compatible patched version listed above = 17.9.0-preview-23531-01 | Use a compatible patched version listed above = 17.9.0-preview-23577-04 | Use a compatible patched version listed above = 17.9.0-release-23619-01 | Use a compatible patched version listed above = 17.10.0-preview-24080-01 | Use a compatible patched version listed above = 17.10.0-release-24177-07 | Use a compatible patched version listed above = 17.11.0-release-24352-06 | Use a compatible patched version listed above = 17.11.0-release-24373-02 | Use a compatible patched version listed above = 17.14.0-preview-25107-01 | Use a compatible patched version listed above
Package | Affected version | Patched version --- | --- | --- .NET SDK 8.0.1xx | >= 8.0.100, <= 8.0.133 | 8.0.134 (bundled VSTest: 17.8.1-hotfix-26528-33) .NET SDK 8.0.4xx | >= 8.0.400, <= 8.0.427 | 8.0.428 (bundled VSTest: 17.11.2-hotfix-26528-32) .NET SDK 9.0.1xx | >= 9.0.100, <= 9.0.123 | 9.0.124 (bundled VSTest: 17.12.1-hotfix-26528-39) .NET SDK 9.0.3xx | >= 9.0.300, <= 9.0.320 | 9.0.321 (bundled VSTest: 17.14.2-hotfix-26528-35) .NET SDK 10.0.1xx | >= 10.0.100, <= 10.0.114 | 10.0.115 (bundled VSTest: 18.0.2-hotfix-26529-108) .NET SDK 10.0.4xx | >= 10.0.400, <= 10.0.403 | 10.0.404 (bundled VSTest: 18.7.1-hotfix-26529-119) .NET SDK 11.0.1xx | >= 11.0.100-preview.1.26104.118, <= 11.0.100-rc.3.26522.148 | 11.0.100 (bundled VSTest: 18.12.0-hotfix-26529-118)
Earlier SDKs in these serviced feature bands must be updated. The first .NET 11 general-availability SDK is fixed; its earlier preview and release-candidate SDKs require an update to 11.0.100.
Check the version of Microsoft.TestPlatform.CLI used by your standalone VSTest installation.
Run dotnet --list-sdks to list installed SDKs and dotnet --version from the project directory to identify the selected SDK, including any global.json selection.
For standalone VSTest CLI installations, replace Microsoft.TestPlatform.CLI with its patched version listed above. For releases without a same-line fix, use a compatible fixed servicing line listed above.
Install a fixed SDK listed above and ensure test invocations select it. Updating a separately installed CLI package does not replace VSTest embedded in an older SDK.
If you have found a potential security issue in a supported version of .NET, please report it to the Microsoft Security Response Center (MSRC) via the MSRC Researcher Portal. Further information can be found in the MSRC Report an Issue FAQ.
Security reports made through MSRC may qualify for the Microsoft .NET Bounty. Details of the Microsoft .NET Bounty Program including terms and conditions are at https://aka.ms/corebounty.
You can ask questions about this issue in the VSTest repository at https://github.com/microsoft/vstest. The Announcements repo (https://github.com/dotnet/Announcements) will contain this bulletin as an issue and will include a link to a discussion issue. You can ask questions in the linked discussion issue.
The information provided in this advisory is provided "as is" without warranty of any kind. Microsoft disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. In no event shall Microsoft Corporation or its suppliers be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if Microsoft Corporation or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.
V1.0 (November 10, 2026): Advisory published.
A vulnerability database tells you what is broken. Attack surface management tells you where it is running: it discovers your internet-facing assets and flags the ones affected by issues like this one.
What is attack surface management? →A security vulnerability is a weakness in software, hardware, or configuration that can be exploited to compromise confidentiality, integrity, or availability. Many vulnerabilities are tracked as CVEs (Common Vulnerabilities and Exposures), which provide a standardized identifier so teams can coordinate patching, mitigation, and risk assessment across tools and vendors.
CVSS (Common Vulnerability Scoring System) estimates technical severity, but it doesn't automatically equal business risk. Prioritize using context like internet exposure, affected asset criticality, known exploitation (proof-of-concept or in-the-wild), and whether compensating controls exist. A "Medium" CVSS on an exposed, production system can be more urgent than a "Critical" on an isolated, non-production host.
A vulnerability is the underlying weakness. An exploit is the method or code used to take advantage of it. A zero-day is a vulnerability that is unknown to the vendor or has no publicly available fix when attackers begin using it. In practice, risk increases sharply when exploitation becomes reliable or widespread.
Recurring findings usually come from incomplete Asset Discovery, inconsistent patch management, inherited images, and configuration drift. In modern environments, you also need to watch the software supply chain: dependencies, containers, build pipelines, and third-party services can reintroduce the same weakness even after you patch a single host. Unknown or unmanaged assets (often called Shadow IT) are a common reason the same issues resurface.
Use a simple, repeatable triage model: focus first on externally exposed assets, high-value systems (identity, VPN, email, production), vulnerabilities with known exploits, and issues that enable remote code execution or privilege escalation. Then enforce patch SLAs and track progress using consistent metrics so remediation is steady, not reactive.
SynScan combines attack surface monitoring and continuous security auditing to keep your inventory current, flag high-impact vulnerabilities early, and help you turn raw findings into a practical remediation plan.