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

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

Amit Schendel
Amit Schendel
Senior Security Researcher

Oct 13, 2026·6 min read·6 visits

Executive Summary (TL;DR)

An insecure deserialization vulnerability in .NET allows unauthenticated attackers to execute arbitrary code via crafted object graphs requiring user interaction.

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Vulnerability Overview

CVE-2026-70035 represents an untrusted deserialization vulnerability impacting multiple versions of Microsoft .NET, .NET Framework, and Visual Studio. The flaw is registered under CWE-502 and allows an unauthenticated remote attacker to execute arbitrary code within the security context of the victim process. Exploitation relies on forcing a vulnerable application to deserialize a maliciously crafted object stream containing pre-identified gadget chains.

The vulnerability exposes network-facing services, desktop applications, and build pipelines processing untrusted input. Systems that receive serialized data structures over network endpoints or open untrusted file formats incorporating .NET object graphs are directly vulnerable. The attack vector is classified as network-based (AV:N) with low complexity (AC:L), requiring user interaction (UI:R) to complete execution.

Microsoft addressed CVE-2026-70035 in October 2026 security updates across affected runtime versions. Due to the wide usage of .NET serialization constructs in legacy and enterprise web applications, unpatched endpoints face elevated exposure to arbitrary remote code execution.

Root Cause Analysis

The underlying root cause stems from incomplete type validation during object graph reconstruction within the standard .NET object deserialization pipeline. When standard object binders reconstruct instance topologies from serialized bytes, they evaluate type metadata included in the payload. If the deserializer lacks a strict type filter or type-limiting binder, arbitrary class instances defined within loaded assemblies can be instantiated.

The process relies on object instantiation side effects. During reconstruction, object fields are initialized, property setters are invoked, and methods tied to lifetime events like finalization or disposed states are executed. Attackers assemble gadget chains consisting of standard framework classes whose member access triggers reflection calls, file manipulations, or process creation operations.

Because .NET object graph reconstruction executes before application-level logic validates business rules, payload execution happens immediately upon deserialization. The lack of restrictive type whitelisting by default in legacy interfaces permits class instantiation outside the application domain target intent.

Code & Architecture Analysis

Vulnerable execution paths occur where deserialization APIs encounter untrusted payload inputs. Applications utilizing binary serialization or polymorphic object binders process object stream type definitions directly. The following code demonstrates the vulnerable pattern where binary object graphs are processed without type restrictions:

// Vulnerable implementation: Deserializing untrusted binary streams without type limits
public object DeserializeUntrustedData(Stream incomingStream)
{
    // Vulnerable pattern: BinaryFormatter or polymorphic deserializer processes raw type hints
    BinaryFormatter formatter = new BinaryFormatter();
    // Object binder is omitted or fails to constrain allowed types
    return formatter.Deserialize(incomingStream);
}

To address this vulnerability, patched implementations enforce strict type binders or migrate away from legacy binary object graph formatters entirely. The remediation introduces strict type constraints or replaces polymorphic object reconstruction with safe data interchange formatters.

// Patched implementation: Enforcing custom SerializationBinder with strict type filtering
public class StrictTypeBinder : SerializationBinder
{
    public override Type BindToType(string assemblyName, string typeName)
    {
        // Explicit whitelist of allowed types for safe deserialization
        if (typeName == "SafeNamespace.ExpectedDataObject")
        {
            return typeof(SafeNamespace.ExpectedDataObject);
        }
        // Reject all unexpected class instantiations to block gadget chains
        throw new SecurityException("Unauthorized type instantiation blocked.");
    }
}
 
public object DeserializeSafely(Stream incomingStream)
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Binder = new StrictTypeBinder(); // Restricts allowed object types
    return formatter.Deserialize(incomingStream);
}

The architectural fix eliminates implicit reflection-based instantiation of arbitrary types during stream processing, preventing the execution of gadget properties during object graph binding.

Exploitation Mechanism

Exploitation of CVE-2026-70035 requires delivering a crafted serialized payload to an application endpoint or user interface. An attacker identifies target endpoints that accept serialized payloads, such as custom RPC interfaces, legacy ASP.NET session state management components, or file import routines in desktop applications.

The attacker constructs a gadget chain using public or proprietary tools to select framework classes that execute commands upon instantiation or property setting. Common gadgets abuse classes within System.Configuration, System.Data, or System.Diagnostics namespaces that invoke Process.Start or compile code upon property assignment.

Upon receiving the payload, the victim process deserializes the stream. As the runtime processes the object graph, member setters in the gadget chain execute consecutively without requiring explicit calls from the surrounding application code. This results in code execution under the privileges of the hosting process.

Impact & Threat Assessment

The severity of CVE-2026-70035 is derived from the full control granted to an attacker upon execution. The attack yields arbitrary code execution within the security context of the affected process. On server deployments, successful exploitation can result in complete system compromise, credential theft, and access to internal databases.

In client scenarios involving Visual Studio or desktop applications, exploitation requires user interaction (UI:R), such as tricking a user into opening a malicious project or processing an untrusted data file. If executed under an elevated account, the exploit grants administrative rights over the host machine.

The CVSS v3.1 score is evaluated at 8.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H). Confidentiality, integrity, and availability impacts are all categorized as High. As of October 2026, the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog.

Mitigation & Remediation Guidance

Remediation requires applying Microsoft official security patches across all affected runtime environments. Operating systems and servers running .NET Framework must receive updates through Windows Update or WSUS. For application deployments utilizing standalone .NET runtimes, target assemblies must be updated to fixed versions (8.0.32, 9.0.21, 10.0.13, or 11.0.0-rc.2).

Architectural mitigations involve replacing binary and polymorphic serializers with non-polymorphic formats such as System.Text.Json or XmlSerializer configured with explicit contracts. If legacy deserializers cannot be immediately replaced, developers must enforce strict SerializationBinder instances that restrict object resolution to explicitly whitelisted types.

Network defense mechanisms should isolate application endpoints accepting untrusted serialized payloads. Web Application Firewalls (WAF) can inspect inbound HTTP headers and POST bodies for known binary serialization headers to drop unauthorized serialized traffic before processing.

Official Patches

MicrosoftMicrosoft Security Response Center Advisory for CVE-2026-70035

Technical Appendix

CVSS Score
8.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
EPSS Probability
0.05%
Top 100% most exploited

Affected Systems

Microsoft .NET 8.0Microsoft .NET 9.0Microsoft .NET 10.0Microsoft .NET 11.0Microsoft .NET Framework 3.5Microsoft .NET Framework 4.6.2Microsoft .NET Framework 4.7Microsoft .NET Framework 4.7.1Microsoft .NET Framework 4.7.2Microsoft .NET Framework 4.8Microsoft .NET Framework 4.8.1Microsoft Visual Studio 2022 version 17.14Microsoft Visual Studio 2026 version 18.10

Affected Versions Detail

Product
Affected Versions
Fixed Version
.NET
Microsoft
>= 8.0.0, < 8.0.328.0.32
.NET
Microsoft
>= 9.0.0, < 9.0.219.0.21
.NET
Microsoft
>= 10.0.0, < 10.0.1310.0.13
.NET Framework
Microsoft
< 4.8.9363.04.8.9363.0
Visual Studio 2022
Microsoft
>= 17.14.0, < 17.14.4217.14.42
AttributeDetail
CWE IDCWE-502 (Deserialization of Untrusted Data)
CVSSv3.1 Score8.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H)
Attack VectorNetwork
Privileges RequiredNone
User InteractionRequired
Exploit StatusUnproven / None
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059Command and Scripting Interpreter
Execution
CWE-502
Deserialization of Untrusted Data

The application deserializes untrusted data without sufficiently verifying that the resulting data will be valid or safe.

Vulnerability Timeline

Officially published on CVE.org by Microsoft CNA
2026-10-13
Published in National Vulnerability Database (NVD)
2026-10-13

References & Sources

  • [1]Microsoft Security Response Center Vulnerability Guide
  • [2]CVE.org CVE-2026-70035 Record

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

•13 minutes ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 2 hours ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
5 views•5 min read
•3 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
15 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
10 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
10 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