CVE-2026-42897 — Microsoft Exchange Server OWA Zero-Day

Actively exploited stored/reflected XSS in Outlook Web Access — weaponized email drives JavaScript execution in the OWA session. On-prem Exchange only.
Threat
CVE-2026-42897 (Exchange OWA)
Severity
EXPLOITED ITW · CVSS 8.1 Critical
Type
XSS / Browser Session Hijack
Access
Network · Unauthenticated email
Version
v0.2 · 2026-06-20
Author
HuntPack
Confidence
High (vendor-confirmed)
01

Executive Summary

CVE-2026-42897 is an actively exploited zero-day in Microsoft Exchange Server Outlook Web Access (OWA). It is an improper-neutralization (cross-site scripting / spoofing) flaw: an attacker sends a weaponized email, and when a victim opens it in a browser via OWA under certain interaction conditions, attacker-controlled JavaScript executes inside the victim's OWA session. Microsoft rates it CVSS 8.1, Critical and has confirmed active exploitation in the wild. CISA added it to the Known Exploited Vulnerabilities catalog.

The attacker's objective is browser-session / token theft and mailbox access (T1185, T1114): script running in the OWA context can read mail, steal session material, and pivot to OWA mailbox access from anomalous infrastructure. Where a victim has elevated rights or the attacker chains to a follow-on web shell under the Exchange web directories (T1505.003), the on-prem Exchange server itself becomes the foothold — and Exchange servers historically run with high privilege.

Highest-value defensive angle: because no atomic IOCs are published, hunt the behavior on the Exchange box — specifically w3wp.exe (MSExchange app pools) spawning shells/interpreters and new .aspx writes under OWA / HttpProxy / aspnet_client. Those are the loudest signals of the post-XSS pivot regardless of the email payload itself. Pair that EDR hunt with native IIS/HttpProxy OWA-log and message-tracking review for the weaponized-email vector.

Scope: on-prem only — Exchange Server Subscription Edition (SE), Exchange Server 2019, Exchange Server 2016. Exchange Online is not affected. Microsoft shipped Security Updates on 2026-06-09; an interim mitigation (Exchange Emergency Mitigation Service, EEMS) was pushed earlier, and reporting notes mitigation gaps in some configurations.

Defender priority: Apply the June 2026 SU to all on-prem Exchange (SE / 2019 / 2016) immediately, confirm EEMS mitigations are active, then hunt for w3wp.exe child-process execution and unexpected .aspx writes under Exchange web dirs over the last 30–60 days — exploitation predates the patch.

02

Source Review & Web Hunter Notes

SourceTierPulledDecision
NVD — CVE-2026-42897AuthoritativeCVSS 8.1, CWE improper neutralization / XSS, network vectorAnchor for scoring & vuln class
Microsoft MSRC advisory + June 2026 Security UpdatesVendorAffected builds (SE/2019/2016), spoofing-over-network impact, SU release 2026-06-09, EEMS mitigationPatch & affected-surface ground truth
SecurityAffairs (cited)ReportingActive exploitation confirmed, weaponized-email → JS-in-OWA mechanism, interim mitigation, mitigation gapsExploitation narrative
BleepingComputer (cited)Reporting"Specially crafted email opened in OWA → arbitrary JavaScript in browser context", affected versions, CISA KEV add, EEMSMechanism & KEV corroboration
SecurityWeek / DarkReadingReportingPatch-urgency framing, on-prem-only scope, no published atomic IOCsScope confirmation

IOC provenance note: As of 2026-06-20 no atomic IOCs (IPs, hashes, filenames, domains) have been publicly published for CVE-2026-42897. This pack ships behavioral signatures only plus REPLACE_WITH_… placeholders. Do not treat any concrete value here as a real-world IOC.

03

Hunt Brief & Attack Chain

Hunt hypotheses

  • H1 — Web-shell pivot: Post-XSS, an operator drops a .aspx web shell under an Exchange web virtual directory (…\FrontEnd\HttpProxy\owa\auth\, …\inetpub\wwwroot\aspnet_client\). Detect anomalous .aspx file writes by IIS/Exchange service accounts.
  • H2 — App-pool child process: w3wp.exe running an MSExchange app pool spawns cmd.exe, powershell.exe, cscript.exe or other interpreters — the classic Exchange-exploitation tell.
  • H3 — Session/token theft & anomalous mailbox access: OWA session reached from rare/foreign IPs shortly after a crafted email, or token reuse from new geos/ASNs — browser session hijacking (T1185).
  • H4 — Outbound C2 from Exchange host: Exchange host processes (w3wp.exe or spawned children) make outbound connections to rare external destinations (T1071).
  • H5 — Weaponized-email vector: Inbound mail with HTML/script payloads correlated to OWA render events in message-tracking + HttpProxy logs.

Attack chain

#StageBehaviorATT&CK
1DeliveryWeaponized email with embedded script delivered to a mailbox served by on-prem OWAT1566
2Initial Access / ExploitVictim opens message in OWA; improper neutralization lets attacker JS execute in OWA sessionT1190
3ExecutionAttacker JavaScript runs in browser context (OWA)T1059.007
4Credential / Session AccessSession token / OWA session material stolen; browser session hijackedT1185
5CollectionMailbox read / mail exfiltrated via OWA from anomalous IPsT1114
6Persistence (follow-on)Optional .aspx web shell dropped under Exchange web dirsT1505.003
7Command & ControlApp-layer C2 from Exchange host / spawned children to rare destinationsT1071
04

Consolidated IOC Table

No atomic IOCs published as of 2026-06-20. The rows below are behavioral indicators and placeholders — hunt on behavior, not on the concrete values.

TypeValueConfidenceActionContext
behaviorw3wp.exe (MSExchange app pool) spawns cmd/powershell/cscript/wscripthighhuntPost-exploit child process on Exchange host (T1190/T1505.003)
behaviorNew .aspx write under owa\auth, HttpProxy, or aspnet_client by IIS/Exchange accthighhuntWeb-shell drop (T1505.003)
behaviorOWA session / mailbox access from rare IP / new ASN post-emailmediumhuntSession hijack / mailbox collection (T1185/T1114)
behaviorOutbound connection from Exchange host process to rare external destmediumhuntC2 (T1071)
ip4REPLACE_WITH_C2_IPmediumpivotPopulate from your own triage; none published
sha256REPLACE_WITH_WEBSHELL_SHA256mediumpivotHash of any .aspx web shell you recover
filenameREPLACE_WITH_WEBSHELL_NAME.aspxmediumpivotAnomalous .aspx under Exchange web dirs
05

Affected Surface & Telemetry Matrix

Affected (on-prem only): Exchange Server Subscription Edition (SE), Exchange Server 2019 (CU14 / CU15), Exchange Server 2016 (CU23). Exchange Online is NOT affected.

SurfaceTelemetryPriorityGap
Exchange host process treeFalcon ProcessRollup2 (ImageFileName / ParentBaseFileName / CommandLine)CriticalNone if sensor deployed on Exchange
Exchange web directoriesFalcon file-write events (TargetFileName) under owa/HttpProxy/aspnet_clientCriticalNeeds file telemetry on the host
OWA / HttpProxy accessIIS logs, HttpProxy logs (W3SVC / Exchange logging)HighOften not centralized — forward to SIEM
Mail flow / deliveryExchange message-tracking logs, mail-gateway logsHighScript-in-HTML detection is weak
Outbound network from hostFalcon NetworkConnectIP4 / DNS request eventsHighEgress-rarity baseline needed
Identity / OWA logonUserLogon, Entra/AD sign-in (for hybrid), token reuseMediumOWA session theft may not surface as new logon
06

ATT&CK Mapping

TacticTechniqueBehaviorQuery / Control
Initial AccessT1190 — Exploit Public-Facing ApplicationXSS in OWA via crafted emailQ5 / native HttpProxy hunt · patch
Initial AccessT1566 — PhishingWeaponized email deliveryNative message-tracking hunt
ExecutionT1059.007 — JavaScriptAttacker JS in OWA sessionNative OWA-log hunt
Credential AccessT1185 — Browser Session HijackingSession/token theft from OWAQ3 · CA / token review
CollectionT1114 — Email CollectionMailbox read/exfil via OWAQ3 / native mailbox-audit hunt
PersistenceT1505.003 — Web Shell.aspx dropped under Exchange web dirsQ2 · IOA
ExecutionT1059 — Command & Scripting Interpreterw3wp.exe spawns shellsQ1, Q4 · IOA
Command & ControlT1071 — Application Layer ProtocolOutbound C2 from Exchange hostQ6
07

Native Audit-Log Hunts

Checks that don't require EDR — run these against IIS, HttpProxy, message-tracking, and Exchange management logs on each on-prem Exchange server.

IIS / HttpProxy OWA logs

  • Parse %ExchangeInstallPath%\Logging\HttpProxy\Owa\*.log and W3SVC IIS logs for OWA requests with unusually long query strings, script-bearing parameters, or requests to non-standard .aspx paths under the OWA virtual directory.
  • Flag requests to any .aspx under owa\auth\ or aspnet_client\ that is not part of the shipped Exchange file set.
  • Correlate OWA AnchorMailbox / AuthenticatedUser values reached from source IPs outside your normal client ranges.

Message tracking — weaponized email

  • Run Get-MessageTrackingLog for inbound mail with HTML bodies to user mailboxes; pivot on senders that precede anomalous OWA activity by minutes.
  • Have the mail gateway re-scan recent inbound HTML mail for embedded <script> / event-handler attributes targeting OWA rendering.

Exchange / file system

  • Compare current file set under Exchange web virtual directories against a known-good baseline (file integrity) to surface any added/modified .aspx, .asax, or .ashx.
  • Review IIS app-pool worker recycling and unexpected child processes via Sysmon Event ID 1 where ParentImage is w3wp.exe.
  • Confirm EEMS mitigation state and that the June 2026 SU is installed (build number check) on every server.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · MSExchange app-pool w3wp.exe spawning shells/interpreters
CONF HIGHFP LOWCOST LOW

Looks for: Exchange IIS worker process (w3wp.exe) spawning command shells or scripting interpreters — the highest-fidelity tell of post-exploit code execution on an Exchange host. FP: Exchange health probes and some management cmdlets legitimately spawn PowerShell; scope to MSExchange app-pool context and exclude known maintenance jobs.

// HUNT: w3wp.exe (Exchange app pool) spawning shells/interpreters — post-XSS code exec on Exchange host
// MITRE: T1190, T1505.003, T1059 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 on on-prem Exchange servers
// FALSE POSITIVES: Exchange health mailbox probes, admin PowerShell, monitoring agents
// TUNING: restrict ComputerName to Exchange hosts; allowlist known maintenance parents/commandlines
#event_simpleName=/^(Process|SyntheticProcess)Rollup2$/
| ParentBaseFileName=/^w3wp\.exe$/i
| ImageFileName=/\\(cmd|powershell|pwsh|cscript|wscript|mshta|net1?|whoami|certutil|bitsadmin)\.exe$/i
| ProcessStartTime := formatTime("%Y-%m-%d %H:%M:%S", field=ProcessStartTime)
| table([ProcessStartTime, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, aid], limit=200)
Q2 · New .aspx/web-shell writes under Exchange web directories
CONF HIGHFP MEDCOST LOW

Looks for: Creation of .aspx / .ashx / .asax files under OWA, HttpProxy, or aspnet_client paths — the web-shell drop. FP: Exchange CU/SU installs and OWA customization legitimately write under these dirs; exclude writes whose parent is the Exchange setup/servicing process and correlate to known patch windows.

// HUNT: web-shell (.aspx/.ashx/.asax) written under Exchange web virtual directories
// MITRE: T1505.003 | CONF: high  FP: medium  COST: low
// REQUIRES: file-write telemetry on Exchange hosts
// FALSE POSITIVES: CU/SU servicing, OWA theming/customization, legit admin deployments
// TUNING: exclude TargetFileName written during sanctioned patch windows; allowlist setup parents
#event_simpleName=/^(PeFileWritten|NewExecutableWritten|.*FileWritten)$/
| TargetFileName=/\\(FrontEnd\\HttpProxy|owa\\auth|aspnet_client|ClientAccess)\\.*\.(aspx|ashx|asax|asmx)$/i
| TargetFileName!=/\\(setup|cu\d+|sumitigation)\\/i
| FileWriteTime := formatTime("%Y-%m-%d %H:%M:%S", field=ContextTimeStamp)
| table([FileWriteTime, ComputerName, UserName, TargetFileName, ContextBaseFileName, aid], limit=200)
Q3 · Anomalous OWA mailbox access from rare source IPs
CONF MEDFP MEDCOST MED

Looks for: OWA / Exchange logon activity concentrated from rarely-seen source IPs, surfacing session-hijack and anomalous mailbox access. FP: Travelling users, VPN egress changes, and new mobile carriers create benign rare IPs; correlate with the email timeline and require a low session count per IP.

// HUNT: OWA logon / mailbox access from rare source IPs (session hijack, mail collection)
// MITRE: T1185, T1114 | CONF: medium  FP: medium  COST: medium
// REQUIRES: UserLogon events (or forwarded IIS/HttpProxy logs) for OWA
// FALSE POSITIVES: traveling users, VPN/egress changes, new carriers
// TUNING: raise the rare-IP threshold; join to message-tracking timeline before alerting
#event_simpleName=UserLogon
| RemoteAddressIP4=*
| groupBy([RemoteAddressIP4, UserName], function=count(as=hits))
| hits<=3
| sort(field=hits, order=asc, limit=200)
| table([RemoteAddressIP4, UserName, hits], limit=200)
Q4 · Any anomalous child process under Exchange service context
CONF HIGHFP MEDCOST LOW

Looks for: Broader net than Q1 — any non-allowlisted child spawned by Exchange worker/transport processes (w3wp.exe, MSExchange*, UMWorkerProcess.exe). FP: Exchange itself spawns helper binaries; baseline the legitimate children per server and exclude them before alerting.

// HUNT: unexpected children of Exchange worker/transport processes
// MITRE: T1190, T1059 | CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2 on Exchange hosts
// FALSE POSITIVES: legit Exchange helper binaries (e.g. inspector, wermgr) — baseline per host
// TUNING: build an allowlist of known-good ImageFileName children and exclude them
#event_simpleName=/^(Process|SyntheticProcess)Rollup2$/
| ParentBaseFileName=/^(w3wp|MSExchange.*|UMWorkerProcess|EdgeTransport|noderunner)\.exe$/i
| ImageFileName!=/\\(w3wp|conhost|wermgr|werfault|MSExchange.*|Microsoft\.Exchange.*)\.exe$/i
| groupBy([ComputerName, ParentBaseFileName, ImageFileName], function=[count(as=hits), collect([CommandLine])])
| sort(field=hits, order=asc)
| table([ComputerName, ParentBaseFileName, ImageFileName, hits, CommandLine], limit=200)
Q5 · OWA endpoint requests with script/long-payload indicators (forwarded IIS)
CONF MEDFP MEDCOST MED

Looks for: Forwarded IIS/HttpProxy OWA log lines containing script tokens or anomalously long query strings against OWA endpoints — the weaponized-email render and any injected payload. FP: Long benign tokens appear in normal OWA traffic; require script-token regex hits and pivot on the requesting client/mailbox.

// HUNT: OWA requests carrying script tokens / oversized query strings (XSS render + injection)
// MITRE: T1190, T1059.007 | CONF: medium  FP: medium  COST: medium
// REQUIRES: IIS / HttpProxy OWA logs forwarded into LogScale
// FALSE POSITIVES: legitimate long OWA URIs, encoded mail content
// TUNING: narrow cs_uri_query regex to your environment; exclude known OWA app paths
#repo=iis_owa
| cs_uri_stem=/\/owa\//i
| cs_uri_query=/(%3C|<)script|onerror=|onload=|javascript:|document\.cookie/i
| table([@timestamp, c_ip, cs_username, cs_method, cs_uri_stem, cs_uri_query, sc_status], limit=200)
Q6 · Outbound network from Exchange host processes to rare destinations
CONF MEDFP MEDCOST MED

Looks for: External connections initiated by Exchange host processes to rarely-seen remote IPs — C2 from the compromised server. FP: Exchange reaches Microsoft endpoints, OCSP/CRL, and AV update infra; exclude known-good ASNs and require an external, low-frequency destination.

// HUNT: outbound connections from Exchange host processes to rare external destinations
// MITRE: T1071 | CONF: medium  FP: medium  COST: medium
// REQUIRES: NetworkConnectIP4 on Exchange hosts
// FALSE POSITIVES: MS service endpoints, OCSP/CRL, AV/update traffic
// TUNING: exclude RFC1918 + known-good CIDRs; raise rarity threshold
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^(w3wp|powershell|pwsh|cmd|cscript)\.exe$/i
| RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.)/
| groupBy([RemoteAddressIP4, ContextBaseFileName, ComputerName], function=count(as=conns))
| conns<=5
| sort(field=conns, order=asc, limit=200)
| table([RemoteAddressIP4, ContextBaseFileName, ComputerName, conns], limit=200)
09

Custom IOA Recommendations

IOA namePatternExclusionsDeployment
Exchange-WorkerProcess-Spawns-ShellParent w3wp.exe → child cmd/powershell/pwsh/cscript/wscript/mshta/certutilExchange health probes; sanctioned admin PowerShell hostsProcess-create IOA, scoped to Exchange host group, action Detect→Prevent after baseline
Exchange-Webdir-Aspx-WriteFile create matching *\(HttpProxy|owa\auth|aspnet_client)\*.aspxCU/SU servicing parent; patch-window writesFile-write IOA on Exchange host group
Exchange-Host-Suspicious-EgressExchange process → external IP not in allowlist on uncommon portMS/OCSP/AV CIDRsNetwork IOA, Detect, on Exchange host group

Deploy IOAs to a dedicated Exchange host group so prevention scope stays tight. Run in Detect for one baselining cycle, fold benign parents/children into the exclusion list, then escalate to Prevent.

10

Machine-Readable IOC Appendix

No atomic IOCs published as of 2026-06-20 — the CSV uses REPLACE_WITH_… placeholders. Ship the behavioral signatures and the patch/EEMS audit block; fill atomic values only from your own confirmed triage.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
ipv4,REPLACE_WITH_C2_IP,detect,high,2026-12-20,CVE-2026-42897 Exchange OWA C2,campaign:Exchange-OWA-CVE-2026-42897
sha256,REPLACE_WITH_WEBSHELL_SHA256,detect,critical,2026-12-20,CVE-2026-42897 web shell,campaign:Exchange-OWA-CVE-2026-42897
domain,REPLACE_WITH_C2_DOMAIN,detect,high,2026-09-20,CVE-2026-42897 OWA C2,campaign:Exchange-OWA-CVE-2026-42897
Behavioral Signatureshunt these, not hashes
w3wp.exe (MSExchange app pool) -> cmd|powershell|pwsh|cscript|wscript|mshta|certutil
new .aspx|.ashx|.asax under \FrontEnd\HttpProxy\ | \owa\auth\ | \aspnet_client\
OWA mailbox access from rare/new source IP shortly after inbound HTML email
outbound from Exchange host process to rare external IP (non-RFC1918, low freq)
inbound email with embedded <script>/event-handler rendered in OWA
Named Tooling / Pathswatchlist
%ExchangeInstallPath%\FrontEnd\HttpProxy\owa\auth\
%ExchangeInstallPath%\FrontEnd\HttpProxy\ClientAccess\
C:\inetpub\wwwroot\aspnet_client\
%ExchangeInstallPath%\Logging\HttpProxy\Owa\   (review for anomalous endpoints)
No named malware family or atomic IOC published as of 2026-06-20
Patch / EEMS Auditclose the door
# Confirm June 2026 SU installed (run on each Exchange server)
Get-Command ExSetup.exe | ForEach { $_.FileVersionInfo.ProductVersion }
# Confirm Exchange Emergency Mitigation Service (EEMS) running + mitigations applied
Get-Service MSExchangeMitigation | Select Status
Get-ExchangeServer | Get-ServerComponentState
Get-Mailbox -ResultSize 5   # sanity: management shell reachable
# Affected on-prem: Exchange SE, 2019 (CU14/CU15), 2016 (CU23). Exchange Online NOT affected.
11

Detection Validation Gates

GateCheckPass criteria
Telemetry readyProcessRollup2, file-write, NetworkConnectIP4 present from Exchange hosts; IIS/HttpProxy logs forwardedAll Exchange servers reporting in last 24h
Benign baselineRun Q1/Q4 over 30d; catalog legit w3wp children & servicing writesAllowlist built; Q1 noise < a handful/day/host
Positive testIn a lab Exchange host, spawn cmd.exe from a w3wp context and drop a benign .aspx under owa\authQ1 and Q2 both fire
PromotionFP rate acceptable after baseline; IOAs validated in DetectPromote IOAs Detect→Prevent on Exchange host group
12

Hardening — Tiered

Immediate (0–48h)
  • Install the June 2026 Security Update on every on-prem Exchange (SE, 2019 CU14/CU15, 2016 CU23). Exploitation predates the patch — patch is non-negotiable.
  • Confirm Exchange Emergency Mitigation Service (EEMS) is running and the interim mitigation is applied; do not disable it until SU is in place.
  • Hunt the last 30–60 days with Q1/Q2 for the post-exploit pivot; investigate any hit as a live incident.
  • Force a re-scan of recent inbound HTML mail at the gateway; consider stripping active script content from inbound mail rendered in OWA.
Near term (1–4 weeks)
  • Deploy the three custom IOAs (§9) to a dedicated Exchange host group; baseline then move to Prevent.
  • Forward IIS + HttpProxy OWA logs and Exchange message-tracking into the SIEM so Q3/Q5 have data.
  • Restrict OWA external exposure where feasible (pre-auth / reverse proxy / Conditional Access for hybrid) and enforce MFA on OWA.
  • Baseline egress from Exchange hosts and apply an allowlist so Q6 has a tight rarity signal.
Strategic
  • Plan migration of remaining on-prem mailboxes to Exchange Online (not affected) or to Exchange Server SE with a disciplined SU cadence.
  • Implement file-integrity monitoring on all Exchange web virtual directories with alerting on any new server-side script file.
  • Least-privilege the Exchange service accounts and segment the Exchange tier so a web-shell foothold can't pivot freely.
  • Adopt a standing process to apply Exchange SUs within days of release and verify EEMS health continuously.
13

Deployable Playbooks

1 · Verify patch + EEMS state across all Exchange servers

# Run from Exchange Management Shell on each server
$ver = (Get-Command ExSetup.exe).FileVersionInfo.ProductVersion
Write-Host "Exchange build: $ver"
Get-Service MSExchangeMitigation | Format-Table Name,Status
Get-ServerComponentState (hostname) | Where {$_.State -ne 'Active'}
# Cross-check build against the June 2026 SU build number for your CU.

2 · Baseline + hunt anomalous .aspx under Exchange web dirs (PowerShell)

$roots = @(
  (Join-Path $env:ExchangeInstallPath 'FrontEnd\HttpProxy'),
  'C:\inetpub\wwwroot\aspnet_client'
)
Get-ChildItem $roots -Recurse -Include *.aspx,*.ashx,*.asax,*.asmx -ErrorAction SilentlyContinue |
  Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-60) } |
  Select-Object FullName, LastWriteTime, Length |
  Sort-Object LastWriteTime -Descending |
  Format-Table -AutoSize
# Compare every result against a known-good Exchange file baseline. Investigate unknowns.

3 · Surface w3wp.exe child processes (Sysmon, last 7d)

# Requires Sysmon Event ID 1 (process create)
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=1; StartTime=(Get-Date).AddDays(-7)} |
  Where-Object { $_.Message -match 'ParentImage:.*\\w3wp\.exe' -and
                 $_.Message -match 'Image:.*\\(cmd|powershell|pwsh|cscript|wscript|mshta|certutil)\.exe' } |
  ForEach-Object { $_.TimeCreated; $_.Message } 
14

Containment Runbook

PhaseActionsOwnerEvidence
IdentifyConfirm hit from Q1/Q2; determine which Exchange host, which app pool, which mailbox(es) involvedSOC / IRProcessRollup2 + file-write rows, host name, timeline
ContainNetwork-contain affected Exchange host in Falcon; preserve before reboot; block any confirmed C2; suspend abused OWA sessions/accountsIRContainment ticket, isolated host ID
EradicateRemove web shell(s); confirm SU installed + EEMS active; rotate credentials/tokens for affected mailboxes and any service accounts on the hostIR / Exchange adminFile removal log, build version, reset records
RecoverRestore from known-good if web-dir integrity is in doubt; re-baseline; return host to serviceExchange adminIntegrity check, baseline diff clean
LessonsPromote IOAs to Prevent; tighten OWA exposure/MFA; document SU/EEMS cadence gap that allowed exposureDetection engUpdated IOAs, hardening tickets
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1190OWA XSS exploit via emailQ5Partial
T1566Weaponized email deliveryNative (msg-tracking)GAP
T1059.007JS in OWA sessionQ5 / nativeGAP
T1185Session/token theftQ3Partial
T1114Mailbox collection via OWAQ3 / nativePartial
T1505.003Web shell dropQ2Webdir-Aspx-WriteGood
T1059w3wp spawns interpreterQ1, Q4WorkerProcess-Spawns-ShellGood
T1071C2 from Exchange hostQ6Host-Suspicious-EgressGood

Coverage gaps: The email-delivery (T1566) and in-browser JavaScript execution (T1059.007) steps are inherently weak on EDR — the script runs in the browser, not as a host process. Close these with mail-gateway script stripping, message-tracking correlation (§7), and forwarded OWA logs feeding Q5. The post-exploit host-side pivot (web shell, w3wp children, egress) is well covered by Q1/Q2/Q4/Q6 + IOAs. Validation: all gates in §11 must pass before promoting any IOA to Prevent.

16

Hunt Summary Ticket

TITLE:      CVE-2026-42897 — Exchange Server OWA zero-day (XSS) hunt
SEVERITY:   Critical · CVSS 8.1 · EXPLOITED IN THE WILD (zero-day)
SCOPE:      On-prem Exchange only — SE, 2019 (CU14/CU15), 2016 (CU23). Exchange Online NOT affected.
HYPOTHESIS: Weaponized email -> JS in OWA session -> session/token theft + mailbox access;
            optional follow-on web shell + w3wp.exe child processes on Exchange host.
QUERIES:    Q1 w3wp->shell | Q2 .aspx web-shell write | Q3 rare-IP OWA access |
            Q4 anomalous Exchange children | Q5 OWA script/payload (IIS) | Q6 host egress
DO FIRST:   1) Install June 2026 SU + confirm EEMS active on all Exchange hosts
            2) Run Q1 + Q2 over last 60d; treat any hit as a live incident
            3) Re-scan recent inbound HTML mail at the gateway
FINDINGS:   <populate from triage>
GAPS:       T1566 delivery + T1059.007 in-browser JS weak on EDR; no atomic IOCs published
ACTIONS:    Patch + EEMS; deploy 3 IOAs (Detect->Prevent); forward OWA/HttpProxy logs; enforce OWA MFA
OWNER:      HuntPack
VERSION:    v0.2 · 2026-06-20
17

Changelog

v0.22026-07-24CQL correctness pass. All 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.
v0.12026-06-20Initial HuntPack for CVE-2026-42897 (Exchange OWA zero-day). 6 CQL queries, 3 custom IOAs, behavioral IOC appendix (no atomic IOCs published), tiered hardening, containment runbook.
18

References

TierSourceUsed forAccess date
AuthoritativeNVD — CVE-2026-42897CVSS 8.1, vuln class (improper neutralization / XSS), vector2026-06-20
VendorMicrosoft MSRC advisory + June 2026 Security UpdatesAffected builds, spoofing impact, SU release 2026-06-09, EEMS2026-06-20
ReportingSecurityAffairs — CVE-2026-42897 active exploitationActive exploitation, weaponized-email mechanism, mitigation gaps2026-06-20
ReportingBleepingComputer — Microsoft patches Exchange zero-dayJS-in-OWA mechanism, affected versions, CISA KEV, EEMS2026-06-20
ReportingSecurityWeek / DarkReading — Exchange OWA zero-day coverageOn-prem-only scope, patch urgency, no published atomic IOCs2026-06-20
FrameworkMITRE ATT&CK — T1190, T1566, T1059.007, T1185, T1114, T1505.003, T1071Technique mapping2026-06-20