Microsoft's September 2026 Patch Tuesday is the biggest on record. Depending on how you count external and Chromium-based fixes, this release addresses between 966 and 997 CVEs — a volume that dwarfs any previous monthly cycle and will strain even mature patch management programs. Buried in that avalanche are three categories of risk that demand immediate, out-of-band attention:
- Two zero-day vulnerabilities — security issues already known (and per reporting, of active concern) before patches were available.
- Twenty wormable bugs — flaws whose exploitation can self-propagate across a network without user interaction, the class of vulnerability that historically produces events like WannaCry and BlueKeep-style mass exploitation.
- A critical Exchange Server remote code execution flaw delivered via a Visio-bearing email — meaning a single malicious message landing in a mailbox can lead to code execution on your Exchange infrastructure.
If you run Exchange on-premises, you should treat this as an emergency change. The rest of this post breaks down prioritization, detection coverage for the exploitation behaviors these bug classes produce, and a verification script to confirm remediation across your estate.
Technical Analysis
Scope and Affected Products
Because the CVE count (966–997) includes both Microsoft's first-party fixes and externally tracked Chromium/Edge fixes, defenders should not fixate on the headline number — they should fixate on the exploitation characteristics. The affected surface spans the Windows client and server families, Microsoft Edge (Chromium), Office, Visio, and critically Exchange Server. The standout issue is the Exchange RCE with a Visio-mediated delivery vector.
The Exchange + Visio Attack Chain (Defender's View)
The critical Exchange flaw is notable for its delivery mechanics: an attacker sends a specially crafted email containing a malicious Visio artifact. Processing of that content by Exchange/server-side components leads to code execution. From a defensive standpoint, that attack chain produces highly observable artifacts:
- Inbound email with a Visio attachment or embedded Visio object (
.vsd,.vsdx,.vssx,.vstx, or OLE-embedded Visio content). - The Exchange worker processes (
w3wp.exeunder the MSExchange application pools, orMicrosoft.Exchange.*.exeservice processes) performing actions they almost never perform — spawning child processes, writing executables to disk, or establishing outbound network connections. - Post-exploitation: web shell placement in Exchange virtual directories (
C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\and similar paths), credential access, and lateral movement — the same post-exploitation playbook responders have documented across prior Exchange compromises.
The wormable bugs are the second tier of urgency. Wormable means the exploit requires no authentication or no user interaction and can spread machine-to-machine — typically via SMB, RPC, RDP, or a network-facing service. Twenty of them in a single month means that once a working exploit emerges for even one, unpatched internet-adjacent or flat internal networks face rapid propagation risk. The historical precedent is unambiguous: wormable Windows bugs become mass-exploitation events within weeks of patch release as researchers diff the binaries and reverse the fixes.
Exploitation Status
- Zero-days (2): These were security issues prior to patch availability — the defining characteristic of a zero-day. Treat both as elevated-risk until Microsoft clarifies whether either is under confirmed active exploitation; monitor the Microsoft Security Update Guide and CISA KEV for additions. If either lands in KEV, federal civilian agencies get a binding remediation deadline and you should adopt the same clock.
- Wormable bugs (20): Not all wormable bugs get exploited, but they are the highest-value targets for reverse engineering. Expect public PoCs for at least a subset within 2–6 weeks.
- Exchange Visio RCE: "Critical" severity from Microsoft on Exchange, with an email-borne vector, historically correlates with rapid exploit development — ProxyLogon and ProxyShell taught us that Exchange RCEs are among the fastest to be weaponized at scale.
Detection & Response
Patching is the fix, but your detection layer needs to catch exploitation attempts in the gap between now and full deployment — and to catch any exploitation that already occurred. The detections below target the behaviors these vulnerability classes produce, not specific CVE signatures, because the per-CVE identifiers in this release are numerous and Microsoft's advisory pages should be your canonical source for them.
Sigma Rules
---
title: Exchange Server Process Spawning Suspicious Child Process
id: 4b8c2a91-7d3e-4f5a-b6c9-2e1a8d4f7b3c
status: experimental
description: Detects Exchange worker or service processes spawning command shells, scripting engines, or other unusual child processes — a hallmark of post-exploitation following Exchange RCE such as the September 2026 Visio-email vector.
references:
- https://securityaffairs.com/198705/security/microsofts-biggest-patch-tuesday-974-cves-2-zero-days-and-20-wormable-bugs.html
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/09/09
tags:
- attack.execution
- attack.t1059
- attack.initial_access
- attack.t1190
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|contains:
- '\w3wp.exe'
- '\Microsoft.Exchange'
- '\MSExchange'
- '\EdgeTransport.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
- '\wmic.exe'
- '\net.exe'
- '\net1.exe'
- '\whoami.exe'
- '\nltest.exe'
- '\curl.exe'
- '\wget.exe'
filter_owa_health:
CommandLine|contains:
- 'ExchangeHealthManager'
- 'MonitoringContext'
condition: selection_parent and selection_child and not filter_owa_health
falsepositives:
- Exchange health monitoring and managed availability probes (filter and baseline per environment)
- Legitimate Exchange administrative tooling executed interactively
level: high
---
title: Visio Application Spawning Shell or Script Interpreter
id: 9f2e5b74-1c6a-4d8e-a3b7-5c9d2f6a8e1b
status: experimental
description: Detects Microsoft Visio (VISIO.EXE) spawning command shells or script interpreters, consistent with exploitation of malicious Visio documents used as the delivery vehicle in the September 2026 Exchange critical RCE chain or client-side phishing.
references:
- https://securityaffairs.com/198705/security/microsofts-biggest-patch-tuesday-974-cves-2-zero-days-and-20-wormable-bugs.html
- https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/09/09
tags:
- attack.execution
- attack.t1204.002
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\VISIO.EXE'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\msiexec.exe'
- '\schtasks.exe'
- '\certutil.exe'
condition: selection_parent and selection_child
falsepositives:
- Rare; Visio add-ins with shell integration — investigate any hit
level: high
---
title: Web Server Process Writing Executable or Script to Exchange Web Directories
id: 2d7a4f18-8b5c-4e9d-b1a6-3f8c5e2d9a4b
status: experimental
description: Detects w3wp.exe or Exchange processes writing executables, scripts, or ASPX files into Exchange FrontEnd/ClientAccess directories — the classic web shell drop pattern following Exchange RCE exploitation.
references:
- https://securityaffairs.com/198705/security/microsofts-biggest-patch-tuesday-974-cves-2-zero-days-and-20-wormable-bugs.html
- https://attack.mitre.org/techniques/T1505/
author: Security Arsenal
date: 2026/09/09
tags:
- attack.persistence
- attack.t1505.003
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\Microsoft\Exchange Server\'
- '\FrontEnd\HttpProxy\'
- '\ClientAccess\'
selection_ext:
TargetFilename|endswith:
- '.aspx'
- '.asp'
- '.ashx'
- '.asmx'
- '.exe'
- '.dll'
- '.ps1'
- '.bat'
- '.js'
filter_cumulative_update:
TargetFilename|contains:
- '\Setup\'
- '\Bin\ServiceUpdate\'
- 'CumulativeUpdate'
condition: selection_path and selection_ext and not filter_cumulative_update
falsepositives:
- Exchange cumulative update installations — suppress during approved change windows only
level: critical
KQL Hunt — Microsoft Sentinel / Defender
The following query hunts across both the Exchange RCE behavior (server-side child processes and web shell drops) and anomalous inbound Visio attachments in email telemetry. Run it over the last 14 days first, then operationalize it as an analytics rule with a 1-hour lookback.
// Hunt 1: Exchange/w3wp spawning suspicious children + Visio-borne delivery
let SuspiciousChildren = dynamic(["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","certutil.exe","bitsadmin.exe","wmic.exe","net.exe","whoami.exe","nltest.exe"]);
let ExchangeRCE =
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName =~ "w3wp.exe"
or InitiatingProcessFileName startswith "Microsoft.Exchange"
or InitiatingProcessFileName =~ "EdgeTransport.exe"
or InitiatingProcessFileName =~ "MSExchangeFrontendTransport.exe"
| where FileName in~ (SuspiciousChildren)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, SHA256;
let VisioDelivery =
EmailAttachmentInfo
| where TimeGenerated > ago(14d)
| where FileName has_any (".vsd",".vsdx",".vssx",".vstx",".vsdm",".vssm",".vstm")
| join kind=leftouter (
EmailEvents
| where TimeGenerated > ago(14d)
| project NetworkMessageId, SenderFromAddress, Subject, InternetMessageId, DeliveryAction
) on NetworkMessageId
| project TimeGenerated, SenderFromAddress, Subject, FileName, SHA256, RecipientEmailAddress, DeliveryAction;
let VisioChildProc =
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName =~ "VISIO.EXE"
| where FileName in~ (SuspiciousChildren)
| project TimeGenerated, DeviceName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName;
ExchangeRCE
| union VisioChildProc
| sort by TimeGenerated desc;
// Hunt 2 (run separately): Visio-borne email inventory for exposure scoping
// VisioDelivery | summarize count() by SenderFromAddress, FileName
Velociraptor VQL — Exchange Post-Exploitation Artifact Sweep
Use this on Exchange servers to enumerate web-accessible script files recently created in Exchange virtual directories (potential web shells) and any suspicious children of Exchange processes observed on the endpoint.
-- Hunt for recently written script/executable files in Exchange web directories
-- and suspicious Exchange-spawned processes
LET web_dirs = [
'C:/Program Files/Microsoft/Exchange Server/V15/FrontEnd/HttpProxy/**/*.aspx',
'C:/Program Files/Microsoft/Exchange Server/V15/FrontEnd/HttpProxy/**/*.ashx',
'C:/Program Files/Microsoft/Exchange Server/V15/FrontEnd/HttpProxy/**/*.asp',
'C:/Program Files/Microsoft/Exchange Server/V15/ClientAccess/**/*.aspx'
]
LET file_hits = SELECT FullPath, Size, Mtime, Ctime
FROM foreach(row=web_dirs,
query={ SELECT FullPath, Size, Mtime, Ctime FROM glob(globs=_value) })
WHERE Mtime > (now() - 30 * 24 * 3600)
LET proc_hits = SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE (Exe =~ '(?i)w3wp|Microsoft\.Exchange|EdgeTransport'
AND Name =~ '(?i)cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|certutil|net\.exe|whoami')
SELECT * FROM file_hits
UNION ALL
SELECT FullPath=NULL, Size=NULL, Mtime=NULL, Ctime=NULL,
Pid=Pid, Name=Name, CommandLine=CommandLine, Username=Username, CreateTime=CreateTime
FROM proc_hits
Remediation & Verification Script
This PowerShell inventory script (a) confirms the September 2026 cumulative updates are installed on Windows systems, (b) flags on-premises Exchange servers and reports their installed CU/SU state, and (c) checks for suspicious recent file writes in Exchange web directories as a quick triage sweep. Run via your RMM/Intune/SCCM at scale; requires administrative privileges.
# =============================================================
# September 2026 Patch Tuesday — Fleet Verification & Triage
# Run elevated. Review output before drawing conclusions.
# =============================================================
$Report = [ordered]@{}
# --- 1. OS build + installed hotfixes from Sept 2026 onward ---
$os = Get-CimInstance Win32_OperatingSystem
$Report['OSBuild'] = "$($os.Caption) $($os.Version) (Build $($os.BuildNumber))"
$Report['RecentHotfixes'] = Get-HotFix |
Where-Object { $_.InstalledOn -ge (Get-Date '2026-09-08') } |
Select-Object HotFixID, Description, InstalledOn
# --- 2. Exchange Server detection and version ---
$exchSetup = 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Setup'
if (Test-Path $exchSetup) {
$Report['ExchangeDetected'] = $true
$Report['ExchangeVersion'] = (Get-ItemProperty $exchSetup -ErrorAction SilentlyContinue |
Select-Object MsiProductMajor, MsiProductMinor, MsiBuildMajor, MsiBuildMinor)
Write-Warning 'Exchange Server detected: cross-reference build numbers against the Microsoft Exchange Server build number table and apply the September 2026 Security Update IMMEDIATELY.'
} else {
$Report['ExchangeDetected'] = $false
}
# --- 3. Triage sweep: recent script/exe writes in Exchange web dirs ---
$webRoots = @(
"$env:SystemDrive\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy",
"$env:SystemDrive\Program Files\Microsoft\Exchange Server\V15\ClientAccess"
)
$suspiciousExt = '.aspx','.ashx','.asp','.asmx','.exe','.dll','.ps1','.bat','.js'
$Report['RecentWebWrites'] = foreach ($root in $webRoots) {
if (Test-Path $root) {
Get-ChildItem $root -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $suspiciousExt -contains $_.Extension.ToLower() -and
$_.LastWriteTime -gt (Get-Date).AddDays(-30) } |
Select-Object FullName, LastWriteTime, Length
}
}
# --- 4. Pending reboot check (patch not effective until reboot) ---
$Report['RebootPending'] = (Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending') -or
(Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired')
$Report.GetEnumerator() | ForEach-Object { "=== $($_.Key) ==="; $_.Value | Format-List | Out-String }
Remediation Guidance
- Patch Exchange on-premises servers first, out of band. An email-borne critical RCE against Exchange is your highest-velocity risk. Apply the September 2026 Exchange Security Update per the Microsoft Security Update Guide. Verify build numbers post-patch against Microsoft's Exchange Server build number and release date table. Do not wait for your normal monthly window.
- Treat the two zero-days as exploited until told otherwise. Identify the affected products from Microsoft's advisory pages, map them to your asset inventory (this is where your CMDB earns its keep), and patch those products within 24–72 hours. Watch CISA's Known Exploited Vulnerabilities catalog — if either CVE is added, adopt CISA's remediation deadline.
- Sequencing for the 20 wormable bugs: identify which wormable CVEs affect services that are (a) internet-exposed or (b) reachable across large internal segments. Those go in the first wave with Exchange. Internal-only wormable bugs go in the second wave, completed within two weeks — before binary-diffing yields working exploits.
- Segmentation as a compensating control: until wormable bugs are patched, enforce host firewall rules and network ACLs limiting workstation-to-workstation SMB/RPC/RDP. Wormable bugs die on segmented networks.
- Email controls for the Visio vector: if you cannot patch Exchange immediately, block or quarantine inbound Visio file types (
.vsd,.vsdx,.vssx,.vstx, macro-enabled Visio formats) at the mail gateway as a temporary compensating control. Few organizations receive legitimate Visio files by email in 2026. - Restrict outbound from Exchange servers: Exchange should not be initiating arbitrary outbound connections. Egress filtering on Exchange servers blunts C2 and payload staging even if exploitation succeeds.
- Hunt before you patch: run the KQL and VQL sweeps above against the last 30 days. Patching closes the door; it does not evict an intruder who already walked through it. Zero-days mean the vulnerability existed before the fix — assume possible pre-patch compromise on high-value Exchange assets and check for web shells and anomalous child processes.
- Edge/Chromium: the external CVEs in this release are handled by Edge auto-update for most endpoints, but verify managed environments where updates are pinned or deferred.
A 974-CVE month is where vulnerability management programs prove or disprove themselves: asset inventory accuracy, patch orchestration, and risk-based prioritization determine whether you fix what matters in days or drown in a spreadsheet for weeks.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.