CVE-2026-41091 (RedSun) — Microsoft Defender Link-Following Elevation of Privilege
Executive Summary
CVE-2026-41091 — tracked publicly as "RedSun" — is an "improper link resolution before file access" (link-following, CWE-59) flaw in the Microsoft Malware Protection Engine (MsMpEng.exe / mpengine.dll). An unprivileged attacker stages a reparse point (junction/symlink) and writes a crafted file to a privileged location; MMPE, running as SYSTEM, follows the link and writes the file back to that location — yielding code execution as SYSTEM. CVSS 7.8, rated Exploitation Detected · Weaponized · Publicly Aware, and added to the CISA KEV catalog.
It was disclosed by the researcher cluster "Chaotic / Nightmare Eclipse" on 2026-04-15 and is one of a series of Defender-engine attacks from the same group — alongside CVE-2026-45498 (a second exploited Defender LPE), the Defender RCE CVE-2026-45584, and the later unpatched RoguePlanet PoC that bypassed Microsoft's mid-May hardening. Unlike RoguePlanet, RedSun has a fix: Microsoft patched it in Malware Protection Engine v1.1.26040.8 (engine updates apply automatically, but verify across the fleet).
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry |
|---|---|---|---|
| 1 · Vendor (PSIRT) | Microsoft MSRC — CVE-2026-41091 | Link-following LPE in MMPE; exploited/weaponized/publicly aware; fixed v1.1.26040.8 | yes |
| 1 · News of record | The Hacker News — Microsoft Warns of Two Actively Exploited Defender Vulns | CVE-2026-41091 + CVE-2026-45498 exploited; CISA KEV; "RedSun"; Nightmare Eclipse 2026-04-15 disclosure | yes |
| 2 · Vendor research | Help Net Security / ZDI | MMPE versions affected (v1.26030.3008) → fixed v1.1.26040.8; LPE write-back mechanism | yes |
| 2 · Aggregator | TheWindowsUpdate / SecurityBoulevard | June 2026 Patch Tuesday context; record CVE count; Defender exploit cluster | partial |
| 1 · Sibling intel | Picus — RoguePlanet / Nightmare Eclipse analysis | Same junction-redirect primitive; MsMpEng.exe lineage + protected-dir writes; infra IOCs (carried for the family) | yes |
Decisions: lead with the patch (MMPE v1.1.26040.8 closes it — the behavioral hunts are the interim/defense-in-depth net); reuse the Nightmare Eclipse family detection logic (link-following write-back, SYSTEM-parented shells) validated against the RoguePlanet sibling; key the durable detections on behavior since the same primitive recurs across the actor's CVEs.
Hunt Brief & Attack Chain
Working hypothesis: A standard-user process stages a reparse point in a user-writable directory and writes a crafted file targeting a privileged path; the Defender engine (SYSTEM) follows the link during a scan/remediation and writes the file into the protected location, after which a SYSTEM-integrity payload (planted DLL/binary/task) executes.
| Step | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Foothold | Low-priv code execution (commodity malware / local user) | ProcessRollup2 | Baseline |
| 2 · Stage reparse + craft file | Junction/symlink in %TEMP%/%LOCALAPPDATA%/ProgramData pointing at a privileged path; write crafted payload | Sysmon EID 11 | N1; proxy via protected-dir write |
| 3 · Defender follows link | MMPE (SYSTEM) scans/remediates → writes the file back to the privileged location | PeFileWritten | Q1 — engine PE write to protected dir |
| 4 · SYSTEM execution | Planted binary/DLL/task runs at SYSTEM | ProcessRollup2 | Q2 / Q4 |
| Post · Persist/spread | New local admin, service, or task with SYSTEM rights | ServiceInstalled, ScheduledTaskRegistered | Containment §11 |
Affected surface & telemetry
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Windows endpoints running MMPE < v1.1.26040.8 | Defender platform/engine version inventory | Critical | Low — query engine version directly |
| Defender-engine file ops | PE write w/ writing-process context (PeFileWritten) | High | Medium — non-PE writes not captured |
| Reparse / junction creation | FileCreate w/ reparse attribute | Medium | High — needs Sysmon EID 11 |
| SYSTEM execution lineage | Process lineage + AuthenticationId (ProcessRollup2) | High | Low — standard sensor |
Consolidated IOC Table
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| Version | MMPE < v1.1.26040.8 | high | detect | Vulnerable engine — patch closes the flaw |
| Behavior | MsMpEng.exe writing PE into \System32\ / \Program Files\ | high | detect | Link-following write-back outcome (RedSun core) |
| Behavior | MsMpEng.exe → cmd/powershell/conhost (SYSTEM) | high | detect | SYSTEM exec via the engine (no benign equivalent) |
| Domain | projectnightcrawler.dev | medium | hunt | Nightmare Eclipse exploit host (family infra) |
| Domain | deadeclipse666.blogspot.com | medium | hunt | Group disclosure channel |
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Privilege Escalation | T1068 — Exploitation for Privilege Escalation | Link-following in MMPE yields SYSTEM | Q1, Q2, Q4; patch |
| PrivEsc / Defense Evasion | T1574 — Hijack Execution Flow | Junction/symlink redirects a privileged write-back | Q1, Q4; N1 |
| Privilege Escalation | T1548 — Abuse Elevation Control Mechanism | Standard user reaches SYSTEM integrity | Q2, Q4 |
| Execution | T1059.001 / .003 — PowerShell / Windows Command Shell | SYSTEM shell via the engine | Q2 |
| Defense Evasion | T1211 — Exploitation for Defense Evasion | Subverts the AV product to gain SYSTEM | WDAC/AppLocker §10 |
Native Audit-Log Hunts
| Hunt | Source | Logic | Response |
|---|---|---|---|
| N1 · Reparse point in temp | Sysmon EID 11 (FileCreate) | Junction/symlink creation in %TEMP%/%LOCALAPPDATA%/ProgramData preceding a Defender write | High-fidelity if Sysmon deployed; pairs with Q1 |
| N2 · WDAC/AppLocker block | AppLocker/*, CodeIntegrity/Operational | Blocked execution of an unsigned SYSTEM binary from a user/planted path | Confirms control working; investigate payload |
| N3 · MMPE version inventory | Get-MpComputerStatus → AMEngineVersion | Endpoints with engine < v1.1.26040.8 (vulnerable) | Force Defender platform/engine update; the fix |
| N4 · Defender exploit-cluster infra | Proxy / DNS logs | Resolution of projectnightcrawler.dev / deadeclipse666.blogspot.com | Investigate host; perishable |
CrowdStrike LogScale CQL Hunt Queries
SyntheticProcessRollup2. These mirror the RoguePlanet family detections — once MMPE ≥ v1.1.26040.8 is verified fleet-wide (N3), keep them as defense-in-depth for the recurring junction-redirect primitive.Looks for: MsMpEng.exe as the writing process for a PE in System32/SysWOW64/Program Files. Accomplishes: catches the RedSun link-following write-back — the core exploit outcome.
// HUNT: Defender engine writing a PE into a protected system directory (CVE-2026-41091) // MITRE: T1574, T1068 | CONF: high FP: low COST: low-med // FP NOTES: Defender writes signatures/platform binaries into its OWN dirs, excluded below #event_simpleName=/PeFileWritten|NewExecutableWritten/ | ContextBaseFileName=/^MsMpEng\.exe$/i | TargetFileName=/\\(System32|SysWOW64|Program Files( \(x86\))?)\\/i | TargetFileName!=/\\(Windows Defender|Microsoft\\Windows Defender|Microsoft\\Windows Security)\\/i | table([@timestamp, ComputerName, ContextBaseFileName, TargetFileName, SHA256HashData], limit=200)
Looks for: MsMpEng.exe as the parent of a shell or scripting host. Accomplishes: catches SYSTEM code execution via the engine — no benign equivalent.
// HUNT: Microsoft Defender engine spawning an interactive shell or script host // MITRE: T1068, T1059.001/.003, T1548 | CONF: high FP: low COST: low // FP NOTES: Defender legitimately launches MpCmdRun.exe / MsMpEngCP.exe, never interactive shells #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^MsMpEng\.exe$/i | FileName=/^(cmd|powershell|powershell_ise|pwsh|conhost|cscript|wscript|mshta|rundll32|regsvr32)\.exe$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, AuthenticationId, SHA256HashData], limit=200) | sort(@timestamp, order=desc)
Looks for: any child of MsMpEng.exe that is not a known Defender helper. FP: Defender helpers (MpCmdRun.exe, NisSrv.exe) — excluded; validate per platform version.
// HUNT: Anomalous child process of the Microsoft Defender engine // MITRE: T1068, T1574 | CONF: high FP: low-med COST: low // TUNING: exclude the known Defender helper set; alert on anything else parented by MsMpEng.exe #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^MsMpEng\.exe$/i | FileName!=/^(MpCmdRun|MsMpEngCP|NisSrv|MpDlpService|MsSense|SenseIR|SenseCncProxy|MpDefenderCoreService)\.exe$/i | table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, SHA256HashData], limit=200)
Looks for: a process running as SYSTEM (AuthenticationId 999) whose image sits in a user temp / ProgramData path. FP: SYSTEM-context installers from %TEMP% — pair with Q1/Q2 on same host.
// HUNT: SYSTEM-integrity process launched from a user-writable directory // MITRE: T1068, T1574, T1059 | CONF: low-med FP: medium COST: low-med // TUNING: correlate to Q1/Q2 hits on same aid; exclude known signed installer/update paths #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | AuthenticationId=999 | ImageFileName=/\\(Users\\[^\\]+\\AppData\\Local\\Temp|ProgramData)\\.+\.(exe|dll|scr)$/i | table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData], limit=200)
Looks for: resolution of the group's known exploit-hosting / disclosure domains. Investigate-only, perishable infrastructure shared across the actor's CVEs.
// HUNT: DNS resolution of known Nightmare Eclipse infrastructure (family) // MITRE: T1071 | CONF: high FP: low COST: low // FP NOTES: security researchers / sandboxes intentionally resolving the domains #event_simpleName=DnsRequest | DomainName=/(^|\.)projectnightcrawler\.dev$|(^|\.)deadeclipse666\.blogspot\.com$/i | table([@timestamp, ComputerName, ContextBaseFileName, DomainName], limit=200)
Looks for: processes invoking MpCmdRun.exe with engine/platform rollback or removal flags. Accomplishes: surfaces attempts to revert to a vulnerable MMPE. FP: sanctioned IT maintenance — allow-list.
// HUNT: Defender engine/platform downgrade or removal attempt // MITRE: T1562.001 | CONF: medium FP: low COST: low // TUNING: allow-list sanctioned maintenance hosts/AIDs #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^MpCmdRun\.exe$/i | CommandLine=/(-RemoveDefinitions|-revertplatform|-ReversePassiveMode|-rollback)/i | table([@timestamp, ComputerName, UserName, CommandLine, ParentBaseFileName], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA Name | Field Patterns | Benign Exclusions | Deployment Path |
|---|---|---|---|
| RedSun — Defender writes PE to System32 | Writing Image *\MsMpEng.exe; Target *\System32\* / *\Program Files\* excl. Defender dirs | Defender's own directories (excluded) | Custom IOA → File Write (or scheduled-search detect) |
| RedSun — Defender engine spawns shell | Parent Image *\MsMpEng.exe; Child cmd/powershell/conhost/cscript/wscript.exe | None expected — promote high severity, Detect+Block | Endpoint Security → Custom IOA → Process Creation |
Machine-Readable IOC Appendix
Grouped IOC Quick-Copy
One-click blocks for Falcon IOC Management, version audits, and hardening. The patch (MMPE v1.1.26040.8) is the fix; behavior + version are the durable detections.
type,value,action,severity,expiration,description,tags domain,projectnightcrawler.dev,detect,high,2026-09-12,Nightmare Eclipse exploit host (family),campaign:RedSun domain,deadeclipse666.blogspot.com,detect,medium,2026-09-12,Nightmare Eclipse disclosure channel,campaign:RedSun sha256,REPLACE_WITH_PAYLOAD_SHA256,prevent,critical,2027-06-12,RedSun SYSTEM payload,campaign:RedSun
MsMpEng.exe writes a PE into \System32 or \Program Files (link-following write-back) MsMpEng.exe spawns cmd/powershell/conhost/cscript/wscript at SYSTEM Junction/symlink (reparse point) created in %TEMP%/%LOCALAPPDATA%/ProgramData pre-Defender write SYSTEM-integrity process (AuthenticationId 999) executing from %TEMP%/ProgramData MpCmdRun.exe invoked with -RemoveDefinitions / -revertplatform (downgrade to vulnerable engine)
# Confirm Malware Protection Engine is patched (>= v1.1.26040.8) Get-MpComputerStatus | Select-Object AMEngineVersion, AMProductVersion, AMServiceVersion # Vulnerable: AMEngineVersion < 1.1.26040.8 (e.g. 1.26030.3008) # Force update fleet-wide: Update-MpSignature # CISA KEV: CVE-2026-41091 + CVE-2026-45498 (apply MMPE update by the BOD deadline)
CVE-2026-41091 # RedSun — Defender link-following LPE (this pack) — fixed v1.1.26040.8 CVE-2026-45498 # second exploited Defender LPE (also CISA KEV) CVE-2026-45584 # Defender RCE (same engine update) RoguePlanet # later unpatched PoC (bypassed May hardening) — see RoguePlanet-Hunt.html # Defense-in-depth: WDAC/AppLocker enforce; fsutil behavior set SymlinkEvaluation R2L:0 R2R:0
Hardening — Tiered & Deployable
Unlike RoguePlanet, this one is patchable — patching is the fix. The rest is defense-in-depth against the recurring junction-redirect primitive.
- Verify MMPE ≥ v1.1.26040.8 fleet-wide — M1051.
Get-MpComputerStatus | Select AMEngineVersion; force withUpdate-MpSignature. Closes CVE-2026-41091/45498/45584. CISA KEV — meet the BOD deadline. - Keep Defender platform on the current channel + Tamper Protection ON — M1054. Block engine downgrade/rollback (Q6).
- Application allowlisting (WDAC / AppLocker), enforce mode — M1038. Stops the SYSTEM payload from running even if the write-back succeeds.
- Disable remote symlink evaluation — M1042:
fsutil behavior set SymlinkEvaluation R2L:0 R2R:0.
- Remove standing local admin; deploy LAPS — M1026. Limits the value of a SYSTEM foothold.
- ASR + PowerShell Constrained Language Mode + script-block logging — M1042 / M1038 / M1040. Raises cost of the SYSTEM payload; improves Q2 evidence.
- Restrict standard-user disk-image mounting — M1042. Removes the related remote-image variant primitive.
- Enterprise WDAC signed-only code-integrity policy — M1045 / M1038.
- HVCI + Credential Guard — M1043. Contain blast radius if SYSTEM is reached.
- Continuous AV-tamper / config-drift & engine-version monitoring — M1054. Alert on Defender self-modification and version drift fleet-wide.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain the host in Falcon; do not power off (preserve volatile SYSTEM state) | SOC L2 | Containment timestamp; Q1/Q2 event |
| Triage | Pull the MsMpEng.exe write/child tree; capture the PE written into System32/Program Files and any SYSTEM shell command line | SOC L2 | Process/file tree; Q1/Q2 rows |
| Eradicate | Remove the planted binary/DLL/task; delete staged junctions; check for new local admin, service, or task created post-escalation | IR | Service/task/group review |
| Recover | Force MMPE ≥ v1.1.26040.8; rotate credentials for accounts used on the host; verify Tamper Protection; re-image if SYSTEM execution confirmed | IR + IT | Engine version; cred-rotation log |
| Harden | Confirm patch fleet-wide; push §10 controls; promote Q1/Q2 IOAs | Detection Eng | Patch coverage; IOA enabled |
Detection Coverage Map & Validation
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| — | Vulnerable MMPE version | — | — | Good patch + N3 inventory |
| T1574 / T1068 | Link-following write-back to System32 | Q1 | IOA-1 | Good |
| T1068 / T1059 | SYSTEM shell from Defender engine | Q2, Q3 | IOA-2 | Good |
| T1574 | Reparse/junction staging | — | — | GAP needs Sysmon EID 11 (N1) |
| T1068 | SYSTEM exec from user path | Q4 | — | Partial FP risk; correlate Q1/Q2 |
| T1562.001 | Engine downgrade to vulnerable build | Q6 | — | Good |
Validation gates: (1) confirm PeFileWritten + ProcessRollup2 context fleet-wide; (2) Q1/Q2 return zero hits in a 30-day benign lookback; (3) inventory MMPE versions (N3) and confirm patched build; (4) lab-validate lineage firing with a benign parent-spoof harness — never the live exploit; (5) promote Q1/Q2 to Custom IOA Detect+Block (target FP < 1/week).
Hunt Summary Ticket
TITLE: Hunt — CVE-2026-41091 "RedSun" (Microsoft Defender Link-Following LPE)
SEVERITY: High (CISA KEV, exploited ITW, CVSS 7.8; SYSTEM via the AV engine)
SCOPE: Windows endpoints running MMPE < v1.1.26040.8
HYPOTHESIS: Standard-user process stages a junction + writes a crafted file to a
privileged path; MMPE (SYSTEM) follows the link and writes it back ->
SYSTEM code execution.
QUERIES RUN: Q1 Defender PE write to System32 (IOA) | Q2 Defender->shell (IOA) |
Q3 anomalous Defender child | Q4 SYSTEM exec from user path |
Q5 Nightmare Eclipse infra DNS | Q6 engine downgrade
+ Native N1-N4 (reparse EID11, AppLocker block, MMPE version, infra DNS)
DO FIRST: Patch (MMPE >= v1.1.26040.8); then Q1, Q2 — escalate any hit
FINDINGS: <pending analyst execution>
GAPS: Reparse-point telemetry weak in EDR (needs Sysmon)
ACTIONS: Force MMPE patch fleet-wide; WDAC/AppLocker enforce; disable remote symlink
eval; promote Q1/Q2 to Custom IOA Detect+Block
OWNER: HuntPack
VERSION: v0.4 - 2026-06-12
Changelog
table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.References
| Tier | Source | Used For |
|---|---|---|
| 1 | Microsoft MSRC — CVE-2026-41091 | Mechanism, affected/fixed engine versions, exploitation status |
| 1 | The Hacker News — Two Actively Exploited Defender Vulnerabilities | RedSun attribution, KEV, paired CVE-2026-45498 |
| 2 | Help Net Security — Defender vulnerabilities exploited | Engine versions, write-back mechanism |
| 2 | TheWindowsUpdate — CVE-2026-41091 · CISA KEV | Patch context; KEV listing |
| 1 | Picus — Nightmare Eclipse / RoguePlanet analysis | Family junction-redirect primitive, detection logic, infra IOCs |
HuntPack v0.3 · CVE-2026-41091 (RedSun) · Generated 2026-06-12 · Defensive use only — no exploit code. The patch (MMPE v1.1.26040.8) is the fix; behavioral hunts are defense-in-depth for the recurring Nightmare Eclipse primitive. Validate field names in your tenant before promoting any query to alerting.