This is a poisoned note slipped into the mailroom that only detonates when someone reads it through the web kiosk
CVE-2026-42897 is an XSS flaw in on-prem Exchange OWA that lets an unauthenticated attacker send a crafted email which can execute attacker-controlled JavaScript when the victim opens it in Outlook on the web and the required interaction conditions are met. Microsoft says Exchange Server 2016, Exchange Server 2019, and Exchange Server Subscription Edition are affected at any update level; Exchange Online is not affected.
The vendor's HIGH 8.1 is directionally fair, but the operational story is narrower than that score implies. This is not pre-auth Exchange server RCE: the code runs in the victim's browser session, needs user interaction, and only matters where OWA is actually used and reachable. What keeps it firmly in the urgent lane is the KEV listing and confirmed active exploitation, plus the fact that email/session access on Exchange is high-value even without host-level code execution.
4 steps from start to impact.
Deliver a crafted email payload
- Target organization runs on-prem Exchange 2016/2019/SE
- Target user receives attacker-controlled email
- OWA is enabled for the target mailbox population
- Mail hygiene, URL detonation, and secure email gateways can strip or quarantine obviously malicious content
- If users primarily read mail in Outlook desktop/mobile instead of OWA, the chain dies here
CVE-2026-42897 unless content matches known patterns.Lure the victim into OWA
- Victim uses OWA rather than only thick-client Outlook
- Victim opens the crafted message in browser
- Required interaction conditions are satisfied
- UI:R is real here; this is not a blind server-side exploit
- Security awareness, preview-pane behavior differences, and alternate mail clients all reduce reach
Execute JavaScript inside the authenticated OWA session
- OWA session is active or can be established by the victim
- No effective mitigation such as Microsoft's
M2.1.xCSP-based control is present - Browser supports the rendered attack path
- Microsoft's Exchange Emergency Mitigation Service can auto-apply mitigation
M2.1.x - The mitigation adds CSP-style restrictions that break this class of browser-side payload
Monetize the session, not the server
- Victim account has useful mailbox data or privileged workflows
- Attacker can act before the session expires or is revoked
- Blast radius depends heavily on who opened the message
- MFA does not stop a live stolen browser session, but conditional access, session revocation, and anomaly detection can shorten dwell time
The supporting signals.
| In-the-wild status | Confirmed active exploitation. Microsoft disclosed it as actively exploited, and NVD links the CVE to CISA KEV. |
|---|---|
| KEV status | YES. CISA KEV entry added 2026-05-15 with a federal due date of 2026-05-29. |
| EPSS | 0.08822 (8.822%) from the user-provided intel; that is not sky-high statistically, but KEV beats EPSS for prioritization. I could not confirm the exact percentile from a primary source in the retrieved material. |
| CVSS reality check | Microsoft scored it 8.1 / HIGH with AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N. NVD currently shows a lower 6.1 / MEDIUM enrichment with S:C/C:L/I:L, which is a useful reminder that the likely impact is session abuse and spoofing, not server destruction. |
| Affected versions | Exchange Server 2016, Exchange Server 2019, and Exchange Server Subscription Edition at any update level per Microsoft Exchange Team guidance. Exchange Online is not impacted. |
| Fixed versions | No permanent security update was available in the retrieved Microsoft guidance. Microsoft said a future update would target Exchange SE RTM, Exchange 2016 CU23, and Exchange 2019 CU14/CU15; older CUs need upgrading first. |
| Mitigation status | Microsoft's recommended stopgap is Exchange Emergency Mitigation Service with mitigation ID M2.1.x, or the EOMT script for disconnected environments. Important gap: Microsoft says the mitigation does not work with Internet Explorer or Edge in IE mode because IE lacks CSP support. |
| PoC availability | I did not find an authoritative public Microsoft or GitHub PoC in the retrieved primary sources. That said, XSS payload construction is trivial once the vulnerable rendering path is understood, so the absence of a polished repo is not meaningful protection. |
| Exposure / scanning data | Inference from first-party exposure research: Censys counted 98,685 exposed on-prem Exchange servers during a related 2025 Exchange advisory. That is not a count for this exact CVE, but it is the closest credible outside-in signal for how much Exchange attack surface still exists on the public Internet. |
| Disclosure / reporter | Disclosed 2026-05-14. Secondary reporting citing Microsoft says it was reported by an anonymous researcher. |
noisgate verdict.
The deciding factor is confirmed active exploitation against a high-value, internet-facing enterprise mail surface. What keeps this out of CRITICAL is that exploitation still depends on a victim opening the message in OWA and the outcome is session compromise in browser context, not unauthenticated Exchange server takeover.
Why this verdict
- KEV overrides the usual debate: confirmed exploitation in the wild means this is not theoretical, and it targets a business-critical platform with mailbox trust built in.
- User interaction trims the score: the attacker needs a victim to open the crafted email in OWA and satisfy interaction conditions, which sharply narrows reachable population versus pre-auth server bugs.
- On-prem-only narrows population: Exchange Online is not affected, so only organizations still running on-prem Exchange with OWA in use are exposed.
- Blast radius is user-context, not SYSTEM: the attacker gets what the victim's OWA session can do, which is dangerous for executives/admins but still not equivalent to host-level Exchange RCE.
- Mitigation exists today: Microsoft can auto-apply
M2.1.xvia EM Service, reducing dwell time for organizations that left the feature enabled.
Why not higher?
This is not the classic Exchange nightmare scenario where an unauthenticated attacker lands code execution on the server and pivots from there. The chain needs human interaction in OWA, and the practical payload executes in the victim's browser/session rather than as SYSTEM on the Exchange host.
Why not lower?
KEV listing prevents any comfortable downgrade into backlog territory. Even without host takeover, hijacking a live OWA session on a mail server is enough for data theft, internal phishing, fraud enablement, and abuse of high-trust communications.
What to do — in priority order.
- Verify
M2.1.xeverywhere — Confirm Microsoft's Exchange Emergency Mitigation Service applied mitigationM2.1.xon every Exchange mailbox server, or run EOMT in disconnected environments. Because this CVE is KEV-listed, deploy and verify this immediately, within hours rather than waiting for the normal HIGH timeline. - Kill IE and IE mode for OWA — Block Internet Explorer and Edge IE mode access to OWA because Microsoft states the mitigation does not protect those clients due to missing CSP support. Enforce this immediately, within hours anywhere legacy browser paths still exist.
- Constrain OWA exposure — Reduce external reachability to OWA with VPN, reverse-proxy policy, IP allowlisting, or temporary geo/business-unit restrictions where operationally possible. For a KEV-listed bug on a public mail surface, put this control in place immediately, within hours for internet-facing instances.
- Hunt for mailbox abuse — Prioritize detections for anomalous OWA sends, suspicious mailbox rule creation, impossible-travel sessions, and abnormal browser/user-agent patterns. Start the hunt immediately, within hours because successful exploitation looks like trusted user activity more than malware on disk.
- Tier admin mail access away from OWA — Restrict or temporarily reroute privileged/admin mailbox use away from OWA where feasible, because the value of this CVE scales with who opens the message. Apply this immediately, within hours for high-value identities.
- MFA alone doesn't stop abuse of an already-authenticated browser session.
- EDR on the Exchange host is not the main control because the exploit path lives in the victim's browser session and may leave little host-side malware evidence.
- Relying on users to avoid phishing is insufficient; the attack is specifically designed to piggyback on ordinary email-reading behavior in OWA.
- Patching old unsupported CUs later is not a control today; Microsoft indicated the future security update targets specific supported baselines, so older CU drift remains exposed until you first get onto a supported train.
Crowdsourced verification payload.
Run this on each on-prem Exchange server from an elevated Exchange Management Shell or an elevated PowerShell session on the target host. Example: powershell -ExecutionPolicy Bypass -File .\Test-CVE-2026-42897.ps1; local admin is recommended, and for this CVE the script treats **PATCHED as either Microsoft's mitigation M2.1* being applied or the matching CSP rule being present**, since no permanent fixed build was confirmed in the retrieved vendor guidance.
# Test-CVE-2026-42897.ps1
# Checks whether an on-prem Exchange server appears protected from CVE-2026-42897.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
$ErrorActionPreference = 'Stop'
function Write-Result {
param(
[string]$Status,
[int]$Code,
[string]$Detail
)
Write-Output "$Status - $Detail"
exit $Code
}
try {
# Load Exchange snap-in if needed
if (-not (Get-Command Get-ExchangeServer -ErrorAction SilentlyContinue)) {
try {
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn -ErrorAction Stop
} catch {
# Continue; command might still be available in EMS only
}
}
if (-not (Get-Command Get-ExchangeServer -ErrorAction SilentlyContinue)) {
Write-Result -Status 'UNKNOWN' -Code 2 -Detail 'Get-ExchangeServer is unavailable. Run from Exchange Management Shell on the target server.'
}
$server = Get-ExchangeServer -Identity $env:COMPUTERNAME -ErrorAction Stop
if (-not $server) {
Write-Result -Status 'UNKNOWN' -Code 2 -Detail 'Local server is not returned by Get-ExchangeServer.'
}
# Confirm this is an Exchange version family in scope
$editionText = ($server.AdminDisplayVersion | Out-String).Trim()
$major = $server.AdminDisplayVersion.Major
$minor = $server.AdminDisplayVersion.Minor
# Exchange 2016/2019/SE all live under v15; scope determination is imperfect from PowerShell alone.
if ($major -ne 15) {
Write-Result -Status 'UNKNOWN' -Code 2 -Detail "Server does not look like Exchange v15-family. Found: $editionText"
}
$applied = @()
$blocked = @()
if ($server.MitigationsApplied) { $applied = @($server.MitigationsApplied) }
if ($server.MitigationsBlocked) { $blocked = @($server.MitigationsBlocked) }
$m21Applied = $false
$m21Blocked = $false
foreach ($m in $applied) {
if ($m -match '^M2\.1') { $m21Applied = $true }
}
foreach ($m in $blocked) {
if ($m -match '^M2\.1') { $m21Blocked = $true }
}
# Secondary check: look for the CSP mitigation artifact in common OWA/IIS config locations.
$pathsToCheck = @(
'C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\web.config',
'C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\owa\web.config',
"$env:windir\System32\inetsrv\config\applicationHost.config"
)
$cspFound = $false
foreach ($p in $pathsToCheck) {
if (Test-Path $p) {
try {
$content = Get-Content -Path $p -Raw -ErrorAction Stop
if ($content -match 'Content-Security-Policy' -and $content -match "script-src-attr\s+''none''|script-src-attr\s+'none'") {
$cspFound = $true
}
} catch {
# ignore per-file read errors and continue
}
}
}
# Service state is helpful context but not decisive
$svc = Get-Service -Name MSExchangeMitigation -ErrorAction SilentlyContinue
$svcState = if ($svc) { $svc.Status.ToString() } else { 'Missing' }
if ($m21Blocked) {
Write-Result -Status 'VULNERABLE' -Code 1 -Detail "Mitigation M2.1* is explicitly blocked on this server. EM service state: $svcState. Build: $editionText"
}
if ($m21Applied -or $cspFound) {
$reason = @()
if ($m21Applied) { $reason += 'M2.1* present in MitigationsApplied' }
if ($cspFound) { $reason += 'CSP mitigation artifact found in config' }
Write-Result -Status 'PATCHED' -Code 0 -Detail (("Protected for CVE-2026-42897: {0}. EM service state: {1}. Build: {2}" -f ($reason -join '; '), $svcState, $editionText))
}
Write-Result -Status 'VULNERABLE' -Code 1 -Detail "No evidence of M2.1* or matching CSP mitigation found. EM service state: $svcState. Build: $editionText"
}
catch {
Write-Result -Status 'UNKNOWN' -Code 2 -Detail $_.Exception.Message
}
If you remember one thing.
M2.1.x or EOMT coverage on every Exchange server, block IE/IE mode access to OWA, and hunt for suspicious OWA-driven mailbox activity immediately, within hours because KEV evidence overrides the normal noisgate mitigation SLA for a HIGH. There is no permanent patch confirmed in the retrieved vendor guidance, so stay on the mitigation, get older Exchange boxes onto the supported CU baseline Microsoft named, and when the vendor security update ships, deploy it on release rather than consuming the full noisgate remediation SLA of ≤180 days for HIGH.Sources
- Microsoft Security Update Guide - CVE-2026-42897
- Microsoft Exchange Team - Addressing Exchange Server May 2026 vulnerability CVE-2026-42897
- NVD - CVE-2026-42897
- CISA Known Exploited Vulnerabilities Catalog
- Microsoft Learn - Exchange Emergency Mitigation Service
- Microsoft Learn - Exchange Server build numbers and release dates
- FIRST - EPSS
- Censys advisory on exposed on-prem Exchange population (related Exchange exposure baseline)
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.