← Back to Feed CACHED · 2026-07-15 08:33:36 · CACHE_KEY CVE-2026-55008
CVE-2026-55008 · CWE-79 · Disclosed 2026-07-14

Improper neutralization of input during web page generation

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A booby-trapped email that detonates the moment your CEO glances at Outlook Web

CVE-2026-55008 is a stored cross-site scripting flaw in Outlook Web Access (OWA) — the browser-facing mail client that ships with Microsoft Exchange Server. An attacker crafts an email whose HTML body carries JavaScript that OWA fails to neutralize during rendering. When the recipient opens (or in some previewers, merely selects) the message in OWA, the payload executes inside the OWA origin. Affected: Exchange Server Subscription Edition RTM and Exchange Server 2019 CU15, patched in the July 2026 cumulative security updates (KB5103212 and companion packages).

The vendor rating of CRITICAL / 9.6 is defensible and we're keeping it. The CVSS vector shows S:C — scope changed — which is the tell that this isn't a normal reflected XSS. Payloads running in the OWA origin can read the user's mailbox, exfiltrate messages, plant persistent mailbox rules, chain into token/cookie theft, and — depending on how OWA proxies backend calls — pivot into EWS/EAS. Exchange is *the* identity- and communications-adjacent server in most enterprises; downgrading an OWA RCE-equivalent on the basis of UI:R would be malpractice.

"Stored XSS in OWA that fires on email preview against a canonical high-value role — Exchange stays CRITICAL."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Craft the weaponized message

Attacker builds an email whose HTML body contains an XSS payload that survives OWA's HTML sanitizer. Public researchers typically demonstrate this with mutation-XSS gadgets (<svg>, <math>, malformed attribute quoting) that bypass DOMPurify-style filters. Tooling: swaks for SMTP delivery, custom Python email.mime builders, or evilginx-style templating.
Conditions required:
  • Any inbound SMTP path to the target Exchange org
  • Payload that survives Exchange transport rewriting + OWA sanitizer
Where this breaks in practice:
  • Mature secure-email gateways (Proofpoint, Mimecast, M365 EOP in hybrid) strip suspicious HTML
  • Transport rules that force plaintext or block script-adjacent tags
Detection/coverage: Standard AV/AMP on MTA won't flag structural XSS; content-inspection rules must specifically look for the disclosed gadget shape.
STEP 02

Deliver to a mailbox on the vulnerable Exchange org

The email is sent to any user whose mailbox lives on an unpatched on-prem Exchange server. Because this is *stored* XSS in the mailbox, the payload sits on the server until viewed. No further attacker action required after send.
Conditions required:
  • Target org accepts external mail
  • Recipient uses OWA rather than the thick Outlook client for reading
Where this breaks in practice:
  • Users exclusively on Outlook desktop are not directly triggered (though shared-mailbox delegates on OWA still are)
Detection/coverage: Message-tracking logs show the delivery; DLP has no signal because there's no data leaving yet.
STEP 03

Victim opens the message in OWA

Recipient logs into /owa in a browser and reads (or previews) the email. The sanitizer bug causes attacker JavaScript to execute inside the OWA origin, running with the victim's authenticated session. Because CVSS scope is Changed, the payload effectively acts as the victim inside a highly privileged web app.
Conditions required:
  • User reads mail via OWA within session lifetime
  • Browser does not block via strict CSP (OWA's CSP is historically permissive)
Where this breaks in practice:
  • Executives often use the Outlook thick client, not OWA
  • Some orgs disable OWA externally and only allow it on-LAN
Detection/coverage: IIS logs will show OWA request bursts sourced from the victim; EDR on the endpoint may catch follow-on network activity but not the in-browser JS.
STEP 04

Session takeover and mailbox pillage

Payload calls OWA/EWS endpoints as the victim: reads mail, creates hidden inbox rules (auto-forward to attacker-controlled address, delete traces), exfils via fetch() to attacker infrastructure, and steals msExchEcpCanary / auth cookies for offline replay. Tooling: MailSniper-style enumeration adapted to run client-side.
Conditions required:
  • OWA session cookies scoped such that JS in origin can call EWS/ECP
  • No conditional-access re-auth on sensitive actions
Where this breaks in practice:
  • Modern browsers' HttpOnly cookies block direct cookie theft, but in-page fetch still authenticates
  • MFA does not re-prompt once inside session
Detection/coverage: Anomalous EWS traffic patterns from OWA sessions are detectable in Exchange audit logs if you're actively hunting.
STEP 05

Lateral pivot: mailbox rules, phishing from within, admin targeting

Attacker uses the compromised mailbox to send internally-trusted phishing to Exchange admins or Tier-0 accounts (SPF/DKIM pass by definition). If an admin then opens their OWA, chain repeats with elevated blast radius — hidden mailbox rules on the admin, ECP access, potentially RBAC role changes.
Conditions required:
  • Admins use OWA at all
  • No enforced privileged-access workstations for Exchange admin tasks
Where this breaks in practice:
  • Well-run shops use PAWs and separate admin credentials
  • ECP admin actions may require re-authentication
Detection/coverage: New inbox rules, unusual EWS/ECP calls, ForwardingSMTPAddress modifications — all high-fidelity signals in the Unified Audit Log / Exchange admin audit log.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo confirmed ITW as of 2026-07-15. Contrast with sibling CVE-2026-42897 which *is* being exploited — attackers historically pivot to XSS variants fast.
Proof-of-conceptNo public PoC on GitHub or ZDI at time of writing; ZDI Patch Tuesday writeup flags it as a top-priority Exchange fix.
EPSSNot yet scored (disclosure <24h old); expect rapid climb once PoC drops. Historical Exchange OWA XSS bugs reach the 90th percentile within 30 days.
KEV statusNot listed. CISA typically adds Exchange bugs within days of confirmed exploitation.
CVSS vectorAV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H — network-reachable, no auth, requires user to view the email, scope changed (the key uplift).
Affected versionsExchange Server Subscription Edition RTM and Exchange Server 2019 CU15. Exchange Online is not affected.
Fixed buildsSE RTM: KB5103212. Exchange 2019 CU15: July 2026 SU. No effective non-patch workaround — Microsoft's guidance is install the SU.
Public exposureShodan currently indexes ~180,000 OWA endpoints reachable from the internet globally. Any org still fronting OWA externally is directly in the blast.
Disclosure2026-07-14 as part of Microsoft July 2026 Patch Tuesday (622 CVEs total, record volume).
Credited researcherMicrosoft advisory attributes discovery to external researchers coordinated via MSRC; ZDI advisory pending.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.4/10)

Verdict is CRITICAL because the affected component is Exchange Server — canonically a high-value identity- and communications-adjacent role — and the chain ends in full mailbox takeover on message view with no authentication required from the attacker. UI:R (recipient opens the mail) is not meaningful friction against a user population whose entire job is opening mail.

HIGH Technical impact assessment
HIGH Affected version accuracy
MEDIUM Exploitation-in-wild timing (expect PoC within 2-3 weeks)

Why this verdict

  • Role multiplier — Exchange is canonical high-value infrastructure. OWA session compromise = mailbox exfil + inbox-rule persistence + internal phishing from a trusted sender. Blast radius per user is a full mailbox; blast radius per admin is fleet-adjacent. Floor is CRITICAL by the deployment-role rule.
  • Unauthenticated remote trigger. Attacker only needs to send an email — no credentials, no prior foothold, no internal position. Scope-changed XSS makes this effectively an RCE-equivalent inside the OWA origin.
  • UI:R is not real friction here. The user interaction required is *reading email*, the primary function of the application. This is not a 'convince the user to click a weird link' scenario.
  • No compensating tuning available short of patching. Microsoft explicitly notes no configuration-level workaround; SEG filtering is best-effort against novel sanitizer bypasses.
  • Installed base is enormous. ~180k internet-facing OWA endpoints per Shodan, plus internal-only deployments. Sibling CVE-2026-42897 already saw exploitation in this exact product family two months ago — attacker attention is warm.

Why not higher?

There is no severity bucket above CRITICAL in the noisgate schema. Within CRITICAL, we shave 0.2 off the vendor 9.6 because UI:R is genuinely required (contrast a zero-click preview-pane bug) and thick-client Outlook users are unaffected at the trigger step — not enough to change the bucket.

Why not lower?

Downgrading to HIGH would require either a non-critical role (Exchange is not that) or meaningful population narrowing (there isn't any — every unpatched Exchange org with OWA users is exposed). The UI:R argument fails because 'user opens email' is the trivial base rate of mail. Sibling exploitation in the same product family within the last quarter forecloses any 'wait and see' posture.

05 · Compensating Control

What to do — in priority order.

  1. Deploy the July 2026 Exchange SU now — KB5103212 for SE RTM, the July 2026 SU for Exchange 2019 CU15. Per noisgate mitigation SLA for CRITICAL, mitigation deadline is ≤3 days; treat this as the mitigation *and* the remediation. Exchange SU rollouts require post-install schema/RBAC steps — do not skip the Setup /PrepareSchema follow-through if applicable.
  2. Restrict OWA to VPN or Conditional Access — If you can't patch in the 3-day window, block external /owa and /ecp at the reverse proxy or F5/Netscaler in front of Exchange. Reduces the reachable-victim population to LAN/VPN users only. Deploy within hours, not days.
  3. Force Outlook thick-client for privileged users during the window — Executives, IT admins, and finance should have OWA access temporarily disabled via Set-CASMailbox -OWAEnabled $false until the SU is deployed. Removes the trigger vector for the highest-blast-radius mailboxes.
  4. Hunt for post-exploitation IoCs preemptively — Run Get-InboxRule and Get-Mailbox -ResultSize Unlimited | Get-InboxRule across the org, looking for new forwarding rules, ForwardingSMTPAddress, or rules that hide messages by moving to RSS Feeds/Deleted Items. Also review Exchange admin audit log for unexpected RBAC changes.
  5. Tune SEG to strip aggressive HTML — Have Proofpoint/Mimecast/EOP quarantine emails with <svg>, <math>, <foreignObject>, or heavily-obfuscated <style> payloads until the fleet is patched. Not a replacement for the SU — mutation-XSS bypasses are cheap.
What doesn't work
  • MFA on OWA login — doesn't help; the attack fires *after* the user has authenticated.
  • Endpoint EDR — the payload runs inside the browser tab against server-side APIs; there's no process to detect.
  • Blocking macros or attachments — the payload lives in the email body HTML, not an attachment.
  • SPF/DKIM/DMARC — the attacker sends the email legitimately from attacker-owned infrastructure; email authentication passes fine.
  • Browser CSP add-ons or NoScript — OWA fundamentally requires JavaScript to function; users can't run it with scripts disabled.
06 · Verification

Crowdsourced verification payload.

Run on each Exchange server directly as an account in the Organization Management role (Exchange admin). From the Exchange Management Shell: .\Check-CVE-2026-55008.ps1. The script inspects installed build numbers against the July 2026 SU threshold. Read-only, no changes made.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#requires -Version 5.1
# Check-CVE-2026-55008.ps1
# Determines whether the local Exchange server is patched against CVE-2026-55008.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

$ErrorActionPreference = 'Stop'

try {
    $exchSetup = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Setup' -ErrorAction Stop
} catch {
    Write-Output 'UNKNOWN - Exchange Server not detected on this host'
    exit 2
}

$installedVersion = [Version]$exchSetup.MsiProductMajor.ToString() + '.' + $exchSetup.MsiProductMinor.ToString() + '.' + $exchSetup.MsiBuildMajor.ToString() + '.' + $exchSetup.MsiBuildMinor.ToString()
Write-Output "Installed Exchange build: $installedVersion"

# July 2026 SU minimum-safe builds (verify against KB5103212 / KB5094140 release notes for exact numbers)
$fixedBuilds = @{
    'ExchangeSE'      = [Version]'15.2.2562.17'   # SE RTM + July 2026 SU (KB5103212) — confirm exact
    'Exchange2019CU15' = [Version]'15.2.1748.30'  # 2019 CU15 + July 2026 SU — confirm exact
}

# Detect edition
$edition = if ($exchSetup.MsiProductMajor -eq 15 -and $exchSetup.MsiProductMinor -eq 2 -and $exchSetup.MsiBuildMajor -ge 2500) {
    'ExchangeSE'
} elseif ($exchSetup.MsiProductMajor -eq 15 -and $exchSetup.MsiProductMinor -eq 2) {
    'Exchange2019CU15'
} else {
    'UnsupportedOrLegacy'
}

Write-Output "Detected edition: $edition"

if (-not $fixedBuilds.ContainsKey($edition)) {
    Write-Output 'VULNERABLE - unsupported/legacy Exchange edition, no fix available in this branch'
    exit 1
}

$required = $fixedBuilds[$edition]
if ($installedVersion -ge $required) {
    Write-Output "PATCHED - $installedVersion >= $required"
    exit 0
} else {
    Write-Output "VULNERABLE - $installedVersion < $required (July 2026 SU not installed)"
    exit 1
}
07 · Bottom Line

If you remember one thing.

TL;DR
Deploy the July 2026 Exchange SU (KB5103212 for SE RTM, companion KB for Exchange 2019 CU15) across every on-prem Exchange server within the noisgate mitigation SLA of 3 days for CRITICAL — this is both your mitigation and your remediation, since no config-only workaround exists. If you genuinely can't hit the 3-day window, disable external OWA/ECP at the reverse proxy *today* and disable OWA for privileged mailboxes via Set-CASMailbox -OWAEnabled $false as a bridging control. Complete full remediation across the fleet inside the noisgate remediation SLA of 90 days, but in practice Exchange has a hot exploitation history (see CVE-2026-42897 this May) — do not treat 90 days as breathing room. Monday morning: build the patch ring, freeze OWA-facing changes, run the inbox-rule hunt across the org, and start the patch push in production by end of Wednesday.

Sources

  1. Microsoft KB5103212 — Exchange SE RTM July 2026 SU
  2. Microsoft KB5094140 — Exchange 2019 CU15 companion SU
  3. ZDI — July 2026 Security Update Review
  4. SecurityWeek — Microsoft July 2026 Patch Tuesday coverage
  5. Microsoft Community Hub — sibling CVE-2026-42897 advisory
  6. Help Net Security — Exchange CVE-2026-42897 exploitation context
  7. CVE Details — Exchange XSS history
  8. The Hacker News — On-prem Exchange exploitation via crafted email
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.