Kuboid
Open Luck·Kuboid.in

What is Dead May Never Die: The Ghost of Internet Explorer in Windows: MapUrlToZone

DEFCONConference2,355 views44:176 months ago

This talk demonstrates how the legacy MapUrlToZone (MUTZ) API, a core component of Internet Explorer's security zone architecture, remains a critical and exploitable attack surface in modern Windows environments. The researchers detail how MUTZ is used by various Windows applications, including Outlook, to make security decisions, and how subtle parsing differences between MUTZ and other APIs like CreateFile can be leveraged to bypass security controls. The presentation highlights a zero-click attack vector in Outlook that was exploited by a nation-state threat actor, and discusses the importance of holistic, cross-API security patching.

How Legacy Windows APIs Like MapUrlToZone Still Power Zero-Click Exploits

TLDR: The legacy MapUrlToZone (MUTZ) API, a relic of the Internet Explorer era, remains a critical security decision-maker in modern Windows, including Outlook and File Explorer. Researchers discovered that subtle parsing discrepancies between MUTZ and standard file-handling APIs allow attackers to bypass security zones and trigger remote code execution. This research highlights how "dead" code paths continue to provide high-impact attack vectors in contemporary enterprise environments.

Security researchers often focus on the latest memory corruption bugs in browsers or kernel drivers, but the most dangerous vulnerabilities are frequently found in the glue code that connects legacy components to modern applications. The MapUrlToZone (MUTZ) API is a perfect example of this. Despite Microsoft officially retiring Internet Explorer, the underlying architecture that determined whether a URL or file path was "Trusted" or "Untrusted" is still deeply embedded in the Windows operating system.

When an application like Outlook or File Explorer needs to decide if a file is safe to open, it asks the system to map that path to a security zone. If an attacker can trick this API into misclassifying a remote, malicious path as a local, trusted one, they can bypass security features like Protected View or SmartScreen. This is exactly what happened with CVE-2023-23397, a critical zero-click vulnerability that allowed attackers to steal NTLM hashes by simply sending a specially crafted email.

The Mechanics of the Bypass

The core issue lies in how different APIs interpret file paths. When you pass a path to CreateFile, the Windows kernel handles it one way. When you pass that same path to MapUrlToZone, the API attempts to canonicalize the path to determine its origin. If the two APIs disagree on what the path represents, you have a security feature bypass.

For instance, consider a path starting with \\. A standard file API might interpret this as a UNC path to a network share. However, if an attacker injects specific characters or manipulates the path structure, MUTZ might collapse the path in a way that causes it to misidentify the host.

One of the most effective techniques involves path traversal characters or specific prefixes that confuse the canonicalization logic. If you can provide a path that looks like a local file to MUTZ but resolves to a remote SMB share, you can force the system to treat an external, attacker-controlled resource as a local, trusted file. This is particularly potent in Outlook, where the application automatically processes certain properties—like reminder sounds—without any user interaction.

Exploiting Parsing Discrepancies

The research presented at DEF CON 2025 demonstrated that these discrepancies are not just theoretical. By fuzzing the input to MUTZ and comparing its output against CreateFile, the researchers identified multiple ways to force a misclassification.

A common payload structure involves manipulating the UNC path to include an IP address or a hostname that triggers a specific code path in the SMB redirector. If you can force the API to return a zone value of 0 (Local Machine), you effectively tell the operating system that the remote file is as safe as a file sitting on the user's C: drive.

\\172.29.38.158\share\malicious_file.wav

In the case of CVE-2023-23397, the attacker didn't need the user to click anything. By setting the PidLidReminderFileParameter property on a calendar item to a UNC path, the Outlook client would attempt to play the sound file upon the reminder triggering. Because the path was processed by the underlying Windows APIs, the client would automatically initiate an NTLM authentication request to the attacker's server.

Why This Matters for Pentesters

For those performing red team engagements or bug bounty research, MUTZ is a goldmine. It is not just Outlook that uses this API; it is a system-wide service. Any application that relies on the Windows Shell or standard file dialogs is potentially using MUTZ to make security decisions.

When testing an application, look for any feature that accepts a file path or a URL as input. If that application performs any kind of "safe open" or "preview" functionality, it is likely calling MapUrlToZone under the hood. Your goal is to find a path that the application thinks is local, but that you can point to a remote server you control.

The impact of a successful bypass is significant. Beyond NTLM relay attacks, these vulnerabilities can be chained with other flaws to achieve full remote code execution. The researchers also identified a double-free vulnerability, CVE-2025-21219, which occurred when they attempted to patch these issues. This serves as a stark reminder that fixing legacy code is notoriously difficult; adding a cleanup call to a complex, decades-old API often introduces new memory safety issues.

Defensive Considerations

Defending against these attacks requires a holistic approach to path handling. Developers should avoid relying on legacy APIs for security decisions. Instead, use modern, hardened APIs that explicitly handle path validation and do not rely on the outdated security zone architecture.

For blue teams, monitoring for unusual SMB traffic originating from unexpected processes—like outlook.exe or explorer.exe—is critical. If your mail client is attempting to authenticate to an external IP address over SMB, that is a massive red flag. Ensure that NTLM is disabled where possible and that SMB signing is enforced to prevent relay attacks.

The persistence of these vulnerabilities proves that "dead" code is rarely truly dead. It just becomes a hidden, high-privilege attack surface waiting for someone to look closely enough. If you are hunting for bugs, stop looking at the shiny new features and start looking at the APIs that have been around since the 90s. They are almost certainly doing more work than they should be.

Talk Type
research presentation
Difficulty
advanced
Category
exploit dev
Has Demo Has Code Tool Released


DEF CON 33 Main Stage Talks

98 talks · 2025
Browse conference →
Premium Security Audit

We break your app before they do.

Professional penetration testing and vulnerability assessments by the Kuboid Secure Layer team. Securing your infrastructure at every layer.

Get in Touch
Official Security Partner
kuboid.in