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

The Zombie Engine Bites Again: MSHTML MotW Bypass (CVE-2026-21513)

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 12, 2026·7 min read·240 visits

Executive Summary (TL;DR)

CVE-2026-21513 allows attackers to bypass 'Mark of the Web' security warnings by exploiting logic flaws in the legacy MSHTML engine. This means malicious files downloaded from the internet execute without SmartScreen or Protected View warnings. It is being actively exploited (Zero-Day). Patch immediately.

Just when you thought Internet Explorer was dead and buried, its necrotic spirit—the MSHTML engine—has risen from the grave to haunt Windows 11. CVE-2026-21513 is a critical security feature bypass that renders Mark of the Web (MotW) effectively useless. Attackers are currently exploiting this in the wild to bypass SmartScreen and Office Protected View, turning what should be a noisy 'Are you sure?' prompt into silent remote code execution. If you rely on Windows to tell you a file is from the internet, you're currently flying blind.

The Hook: The Unkillable Beast

Let’s be honest: we all thought we attended Internet Explorer’s funeral years ago. Microsoft put it in the ground, shoveled dirt on it, and gave us Edge. But in the world of Windows internal architecture, nothing ever truly dies; it just becomes a 'legacy component.' Enter MSHTML.dll (Trident), the rendering engine that powered IE. It’s still there, lurking in the System32 folder, because half the enterprise software on the planet—and the Windows Shell itself—still relies on it to render HTML, preview files, and display content.

Here’s the problem: Hackers know it’s there too. While Microsoft hardens the front door (Edge/Chromium), the back door (MSHTML) is left creaking open. CVE-2026-21513 isn't a complex heap overflow or a race condition in the kernel. It’s a logic flaw in how this legacy engine handles trust.

Specifically, this vulnerability breaks the Mark of the Web (MotW). MotW is that invisible tag (an NTFS Alternate Data Stream) that Windows slaps on files you download. It’s the reason you see 'Protected View' in Word or 'Windows SmartScreen prevented an unrecognized app from starting.' This vulnerability allows an attacker to craft a file that should be untrusted, but MSHTML looks at it, shrugs, and tells the OS, 'Nah, he’s cool, I know him.' And just like that, your last line of defense against social engineering executes a malicious payload without a whimper.

The Flaw: A Failure of Protocol

To understand this bug, you have to understand the Zone Identifier. When you download malware.exe via Chrome, the browser adds a Zone.Identifier stream with ZoneId=3 (Internet). When you click it, explorer.exe checks this stream. If it sees a 3, it calls IInternetSecurityManager. This manager is the bouncer. It checks the file against SmartScreen and prompts the user.

CVE-2026-21513 exploits a discrepancy in how MSHTML handles specific URI schemes or file formats when passing them to the security manager. The vulnerability essentially essentially 'washes' the file of its mark during the transition between the network layer and the execution layer.

The root cause lies in a failure to propagate the security context. When MSHTML parses a specially crafted payload—often involving .url files, specific Monikers, or embedded objects—it essentially forgets to carry the ZoneId forward. The engine extracts the content to a temporary location or processes it in memory but fails to re-apply the ZoneId=3 tag to the artifact that actually gets executed.

Think of it like checking your coat at a club. You give them a ticket (MotW). But because the coat check attendant (MSHTML) is distracted by a shiny object (the exploit trigger), they hand your coat to a random stranger without asking for the ticket back. The operating system assumes that because the file was handed over by a system component (MSHTML) rather than the browser directly, it must be trusted local content.

The Code: Logic Reconstruction

Since Microsoft is closed-source and the patch binary is a dense forest of assembly, we have to reconstruct the logic based on behavior. This isn't a buffer overflow; it's a missing check.

In a proper implementation, the flow looks like this pseudo-code:

// CORRECT LOGIC
HRESULT CHTMLDocument::OpenStream(IStream* pStream, DWORD dwZone) {
    // 1. Check where the stream came from
    if (dwZone == URLZONE_INTERNET) {
        // 2. Enforce restrictions
        if (!SecurityManager::IsSafeToExecute(pStream)) {
             return E_ACCESSDENIED;
        }
    }
    // 3. Process content
    RenderContent(pStream);
}

The vulnerability in CVE-2026-21513 effectively short-circuits this. The attacker likely uses a specific file type or encapsulation (like a malformed URI inside a shortcut) that confuses the zone detection:

// VULNERABLE LOGIC (Conceptual)
HRESULT CHTMLDocument::OpenStream(IStream* pStream, LPCWSTR pwzUrl) {
    DWORD dwZone;
    
    // The Flaw: The URL parser gets confused by the crafted input
    // e.g., "file:////attacker.com/share/payload.hta?fakeparam=.css"
    if (IsSpecialInternalFormat(pwzUrl)) {
        // MSHTML assumes this is internal/safe and defaults to Local Machine zone (0)
        dwZone = URLZONE_LOCAL_MACHINE; 
    } else {
        dwZone = MapUrlToZone(pwzUrl);
    }
 
    // Security check is bypassed because dwZone is now 0 (Trusted)
    RenderContent(pStream);
}

The fix involves forcing the MapUrlToZone check to happen before any internal format parsing logic kicks in, or ensuring that the 'Special Format' logic inherits the Zone ID of the parent container. The patch likely adds a mandatory call to IInternetSecurityManager::MapUrlToZone regardless of the file extension or protocol wrapper used.

The Exploit: Clicking Into Oblivion

How does an attacker actually use this? They don't need to write shellcode. They just need to wrap their executable in a lie.

The Scenario:

  1. The Bait: You receive a phishing email. "URGENT: Q1 Invoice Discrepancy." Attached is a .zip file. You download it. The zip has MotW.
  2. The Extraction: You extract the zip. The contents should have MotW propagated to them. Inside is a file named Invoice_Scan.url or an HTML file mimicking a PDF.
  3. The Trigger: The file is crafted to invoke the MSHTML engine. For a .url file, it might point to a remote SMB share or use a mhtml: protocol handler.
  4. The Magic: Because of CVE-2026-21513, when MSHTML parses that link, it fails to check the Zone. It retrieves the payload—let's say a script or an HTA file—and executes it.
  5. The Silence: Usually, Windows would scream: "We can't verify who created this file." But because MSHTML dropped the ball, the payload runs with the privileges of the user. No warning. No pop-up.

This is particularly dangerous for "Initial Access Brokers" (IABs). They can sell access to ransomware gangs who can now bypass the one thing stopping users from infecting themselves: the warning dialogs.

The Impact: Why You Should Care

You might be thinking, "So what? I still have to click it." Yes, but the entire security model of modern Windows Client OS relies on informed consent. We rely on the OS to warn users when they are leaving the safety of the 'Local' zone and entering the 'Internet' zone.

When this boundary dissolves, every click becomes a game of Russian Roulette.

  • Ransomware: This is a golden ticket for ransomware delivery. The friction of the "Enable Editing" or "Run Anyway" buttons is removed.
  • Data Exfiltration: An attacker can execute code to silently zip up your Documents folder and push it to a C2 server.
  • Zero-Click Adjacent: While currently listed as UI:R (User Interaction Required), these types of bugs often chain with preview pane exploits. If the mere act of previewing the file in Explorer triggers MSHTML (which it often does), this could theoretically become a zero-click exploit for anyone with the Preview Pane enabled.

The Fix: Stopping the Bleeding

This isn't a configuration drift you can fix with GPO. The code is broken. You need the binaries.

1. Patch Tuesday (Feb 2026): Microsoft has released patches for all supported OS versions. You need the Cumulative Update from February 10, 2026.

  • Windows 11 23H2: Look for KB5051234 (example).
  • Server 2022: Look for KB5051235 (example).

2. Verify the Fix: After patching, test your environment. Download a benign test file (like the EICAR test file or a safe .url sample) and attempt to run it. Ensure SmartScreen still yells at you. If it's silent, you might have patched incorrectly or have a GPO suppressing warnings.

3. Defense in Depth: If you can't patch immediately (why?), use Attack Surface Reduction (ASR) rules. Specifically, the rule "Block all Office applications from creating child processes" can stop the bleeding if the exploit vector starts in Word/Excel. Also, consider blocking .url, .html, and .hta attachments at your email gateway. Nobody needs to email a shortcut file. Ever.

Official Patches

MicrosoftOfficial MSRC Security Advisory

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
8.83%
Top 8% most exploited
1,000,000,000
via Global Windows Install Base

Affected Systems

Windows 11 (22H3, 23H2, 24H2, 26H1)Windows 10 (1607, 1809, 21H2, 22H2)Windows Server 2025Windows Server 2022Windows Server 2019Windows Server 2016Windows Server 2012 / R2

Affected Versions Detail

Product
Affected Versions
Fixed Version
Windows 11
Microsoft
< 10.0.26100.784010.0.26100.7840
Windows 10
Microsoft
< 10.0.19045.693710.0.19045.6937
AttributeDetail
CWE IDCWE-693
Attack VectorNetwork (Email/Web)
CVSS v3.18.8 (High)
Exploit StatusActive / In the Wild
EPSS Score8.83%
KEV ListedYes (Feb 10, 2026)
ImpactSecurity Feature Bypass (MotW)

MITRE ATT&CK Mapping

T1553.005Subvert Trust Controls: Mark-of-the-Web Bypass
Defense Evasion
T1204.002User Execution: Malicious File
Execution
CWE-693
Protection Mechanism Failure

Protection Mechanism Failure

Known Exploits & Detection

In-the-WildActive exploitation confirmed by CISA and CrowdStrike.

Vulnerability Timeline

Vulnerability Published by Microsoft
2026-02-10
Added to CISA KEV (Active Exploitation)
2026-02-10
CISA Remediation Deadline
2026-03-03

References & Sources

  • [1]Microsoft Security Response Center
  • [2]CrowdStrike Patch Analysis
  • [3]SANS ISC Diary
Related Vulnerabilities
CVE-2024-30040CVE-2021-40444

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 1 hour ago•CVE-2026-115895
8.8

CVE-2026-115895: Code Injection via Unsanitized Import Alias in Happy DOM ECMAScript Module Compiler

CVE-2026-115895 is a high-severity code injection vulnerability (CWE-94) in the happy-dom npm package prior to version 21.0.4. The vulnerability exists within the ECMAScriptModuleCompiler component, which transforms ECMAScript module syntax into executable Node.js functions when JavaScript evaluation is enabled. Due to an incomplete fix for CVE-2026-33943, the compiler failed to validate local named import aliases against legal JavaScript identifier rules. Attackers supplying crafted module imports—specifically utilizing destructuring default initializers alongside JSON module attributes—can inject arbitrary JavaScript expressions directly into the host Node.js runtime context.

Amit Schendel
Amit Schendel
2 views•10 min read
•about 2 hours ago•CVE-2026-115883
6.0

CVE-2026-115883: Cross-Namespace Access via Dot-Delimited Labels in LangGraph Postgres and SQLite Stores

An improper input validation and authorization bypass vulnerability exists in the LangGraph storage layer affecting langgraph, langgraph-checkpoint-postgres, and langgraph-checkpoint-sqlite. Because relational store implementations serialize namespace tuples into dot-delimited strings without validating labels on read, search, delete, and batch operations, an attacker who controls a namespace label can inject periods (.) to traverse namespace boundaries and access, modify, or delete data belonging to other namespaces.

Amit Schendel
Amit Schendel
3 views•9 min read
•about 3 hours ago•CVE-2026-115886
6.5

CVE-2026-115886: Unauthenticated Server-Side Request Forgery and Unsafe Reflection in MLflow Scorer Evaluation Endpoints

CVE-2026-115886 (GHSA-2wqp-q3c6-ccj5) is a Server-Side Request Forgery (SSRF) and Unsafe Reflection vulnerability in MLflow versions 3.12.0rc0 prior to 3.17.0. Unauthenticated REST API endpoints accept serialized third-party scorer JSON payloads that are dynamically deserialized and reflectively instantiated without sanitizing constructor keyword arguments. When optional dependencies such as trulens and trulens-providers-litellm are installed, attackers can inject egress-steering arguments into the scorer payload, forcing the MLflow server to dispatch outbound HTTP requests to arbitrary internal destinations or cloud metadata services.

Alon Barad
Alon Barad
4 views•10 min read
•about 4 hours ago•CVE-2026-113872
7.5

CVE-2026-113872: Unauthenticated Process Crash in Express Multer via Late Busboy Stream Resumption

CVE-2026-113872 (GHSA-q7qp-rjg7-q26m) is a high-severity denial-of-service vulnerability affecting the multer multipart/form-data upload middleware for Node.js and Express in versions 2.0.0 through 2.4.0. When an endpoint is configured to accept multiple files using an asynchronous fileFilter callback, a crafted, truncated multipart HTTP request can trigger an unhandled error event on the underlying busboy stream parser after request teardown has already completed. Because all error listeners are stripped during teardown, Node.js treats the resulting error event as an uncaught exception and immediately terminates the server process.

Amit Schendel
Amit Schendel
6 views•12 min read
•about 5 hours ago•CVE-2026-115897
2.1

CVE-2026-115897: Cross-Site Scripting via Function Body Boundary Bypass in serialize-javascript

CVE-2026-115897 (also tracked as GHSA-m5mm-p8h7-m29v and aliased as CVE-2026-115754) is a Cross-Site Scripting (XSS) vulnerability in the Yahoo serialize-javascript npm package prior to version 7.1.3. The flaw exists in the regular expression used by escapeFunctionBody() to neutralize HTML script closing tags within serialized JavaScript functions. Because function bodies are sanitized in isolation before structural formatting is applied, a function whose string representation terminates directly with the sequence '</script' bypasses the positive lookahead check. When combined with serialization formatting options that introduce whitespace delimiters and a subsequent property that supplies a closing bracket, an attacker can prematurely terminate an enclosing HTML <script> block and inject arbitrary HTML or JavaScript into the rendered document.

Amit Schendel
Amit Schendel
5 views•13 min read
•about 6 hours ago•CVE-2026-109841
5.9

CVE-2026-109841: Subresource Integrity Verification Bypass in Node.js Undici

CVE-2026-109841 is a Subresource Integrity (SRI) verification bypass vulnerability in undici, the official HTTP/1.1 and HTTP/2 client library for Node.js that powers the global fetch() implementation. The flaw stems from improper handling of case sensitivity (CWE-178) when validating cryptographic hash algorithm tokens within SRI metadata. Because undici compared incoming algorithm identifiers against a strictly lowercase set without prior ASCII-lowercase normalization, valid uppercase or mixed-case tokens such as SHA256- or Sha384- were treated as unrecognized algorithms and discarded. Under SRI forward-compatibility rules, discarding all provided tokens results in an empty integrity list, causing undici to fail open and accept tampered HTTP response bodies without cryptographic verification.

Alon Barad
Alon Barad
4 views•9 min read