Rapid7's Q3 2026 Quarterly Threat Landscape Report puts a hard number on what most of us in IR have felt in our bones for the last two years: the average time between public disclosure of a high-severity vulnerability and active exploitation is now three days. Worse, 71% of the exploitation activity tracked in Q3 occurred within the first seven days of disclosure.
Read that against your current patch governance. If your organization runs on a 30-day patch cycle for critical systems — or worse, a quarterly maintenance window for network edge devices — you are structurally guaranteeing a 3-to-27-day exposure gap on every high-severity CVE that affects your perimeter. Attackers don't need zero-days anymore. They just need to be faster than your change advisory board.
The report synthesizes vulnerability intelligence, ransomware and encryption-based incident activity, APT tracking, and underground forum monitoring. The through-line is consistent with what we see in our own incident response engagements: initial access brokers and ransomware affiliates are operationalizing public exploit code within hours of it hitting GitHub or underground forums, and edge devices — VPN concentrators, firewalls, remote access gateways, file transfer appliances — remain the highest-value targets because they sit unauthenticated-adjacent on the internet and rarely have EDR coverage.
This post breaks down what the three-day window means operationally, how to detect exploitation attempts against your edge and web-facing estate even without a CVE-specific signature, and how to restructure vulnerability prioritization so your team isn't patching by CVSS score while attackers are patching by exploitability.
Technical Analysis: Why the Exploitation Window Collapsed
What's driving sub-week weaponization
Three converging trends explain the compression Rapid7 measured:
- Exploit-as-a-service economics. Underground forums monitored in the report show exploit code for high-severity flaws being traded, packaged, and integrated into scanning frameworks within 24–72 hours of disclosure. Initial access brokers don't write exploits — they buy or reuse them.
- Patch diffing at scale. For vulnerabilities disclosed alongside a vendor patch, attackers reverse the patch to identify the vulnerable code path. Automated diffing tooling has made this a same-day exercise for many product classes.
- Mass scanning infrastructure. Bulletproof-hosted scanning infrastructure lets a single operator probe the entire IPv4 space for a vulnerable banner or behavior in hours. The moment a working exploit exists, exposure is a function of your internet footprint, not your industry.
Where attacker activity concentrates
Consistent with Rapid7's findings and our own caseload, exploitation clusters around:
- Network edge appliances (VPN, firewall, secure gateway, file transfer) — frequently unpatched because they require downtime windows and lack agent-based telemetry.
- Public-facing web applications and frameworks — where exploitation typically manifests as the web server process spawning anomalous child processes or writing webshells to webroot directories.
- Remote access and identity infrastructure — where successful exploitation chains directly into credential theft and lateral movement.
Exploitation status
The report describes confirmed, in-the-wild exploitation at scale — 43 newly exploited high- and critical-severity vulnerabilities were tracked in Q3 alone. This is not theoretical. The correct defensive assumption for any high-severity CVE affecting an internet-facing asset in 2026 is: exploitation attempts will begin within 72 hours of disclosure, whether or not public PoC exists yet. Treat CISA KEV additions as lagging confirmation, not leading indicators — by the time a CVE hits KEV, opportunistic scanning has usually been underway for days.
Detection & Response
You cannot write a CVE-specific rule for 43 vulnerabilities. What you can do is detect the behavioral constants of post-exploitation on edge and web-facing systems: web server processes spawning shells, webshells landing in webroots, and scanning bursts against your perimeter. These detections hold value across every future CVE in this class.
Sigma Rules
---
title: Web Server Process Spawning Shell or Script Interpreter
id: 3f8a1c42-7d5e-4b91-a6c3-9e2f0d1b8a47
status: experimental
description: Detects common web server, VPN, or edge service processes spawning command shells or script interpreters — a hallmark of post-exploitation webshell activity following rapid vulnerability exploitation.
references:
- https://www.rapid7.com/blog/post/tr-q3-2026-threat-update-attackers-exploiting-vulnerabilities-within-3-days
- https://attack.mitre.org/techniques/T1505/003/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1505.003
- attack.execution
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\w3wp.exe'
- '\httpd.exe'
- '\nginx.exe'
- '\tomcat9.exe'
- '\java.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\certutil.exe'
condition: selection_parent and selection_child
falsepositives:
- Legitimate application server management tooling
- Rare CMS administrative plugins — baseline per application
level: high
---
title: Webshell File Written to Webroot or Web Application Directory
id: 8c2e5b19-4f7a-4d38-b1e6-5a9c0f3d7e21
status: experimental
description: Detects creation of script files in web-accessible directories by web server or unexpected processes, consistent with webshell deployment after exploitation of a public-facing application.
references:
- https://www.rapid7.com/blog/post/tr-q3-2026-threat-update-attackers-exploiting-vulnerabilities-within-3-days
- https://attack.mitre.org/techniques/T1505/003/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1505.003
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\inetpub\wwwroot\'
- '\htdocs\'
- '\www\'
- '\webapps\'
selection_ext:
TargetFilename|endswith:
- '.aspx'
- '.ashx'
- '.asmx'
- '.php'
- '.jsp'
- '.jspx'
- '.war'
filter_legit:
Image|endswith:
- '\devenv.exe'
- '\msbuild.exe'
- '\robocopy.exe'
- '\xcopy.exe'
condition: selection_path and selection_ext and not filter_legit
falsepositives:
- Application deployments — correlate with change windows and deployment service accounts
level: high
KQL — Microsoft Sentinel / Defender
// Hunt 1: Web/edge service processes spawning shells (post-exploitation behavior)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName in~ ("w3wp.exe", "httpd.exe", "nginx.exe", "tomcat9.exe", "java.exe", "node.exe")
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "mshta.exe", "certutil.exe", "rundll32.exe", "curl.exe")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, AccountName, RemoteIP, ReportId
| order by TimeGenerated desc;
// Hunt 2: Inbound connection bursts to edge/VPN appliances via Syslog/CEF ingestion
// Tuned for rapid scanning waves following new CVE disclosure
CommonSecurityLog
| where TimeGenerated > ago(24h)
| where DeviceProduct has_any ("VPN", "Firewall", "ASA", "Fortinet", "PAN", "Pulse", "Ivanti", "Citrix")
| summarize ConnectionCount = count(), UniqueSources = dcount(SourceIP),
Sources = make_set(SourceIP, 20)
by DestinationIP, DestinationPort, bin(TimeGenerated, 15m)
| where ConnectionCount > 200 or UniqueSources > 50
| order by ConnectionCount desc;
Velociraptor VQL
-- Hunt for webshell artifacts: recently created script files in webroots
SELECT FullPath, Size, Mtime, Atime,
upload(file=FullPath) AS Sample
FROM glob(globs=[
'C:/inetpub/wwwroot/**/*.as*',
'C:/inetpub/wwwroot/**/*.php',
'C:/Program Files/*/webapps/**/*.jsp',
'/var/www/**/*.php',
'/opt/tomcat/webapps/**/*.jsp'
])
WHERE Mtime > now() - (7 * 24 * 3600)
ORDER BY Mtime DESC
Remediation / Exposure Verification Script
# Edge & web exposure rapid audit — run on web/app servers during a new-CVE response
# 1) Inventory internet-facing services and their install dates (staleness check)
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName } |
Select-Object DisplayName, DisplayVersion, InstallDate |
Sort-Object DisplayName | Export-Csv C:\IR\installed_software.csv -NoTypeInformation
# 2) Find script files written to webroots in the last 14 days (webshell sweep)
Get-ChildItem -Path 'C:\inetpub\wwwroot' -Recurse -Include *.aspx,*.ashx,*.asmx,*.php,*.jsp -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
Select-Object FullName, LastWriteTime, CreationTime, Length
# 3) Check for missing critical Windows security updates older than 7 days
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0").Updates |
Select-Object Title, @{N='Severity';E={$_.MsrcSeverity}}, @{N='Published';E={$_.LastDeploymentChangeTime}}
Remediation: Winning the 72-Hour Race
When the exploitation window is three days, "patch faster" is not a strategy — it's a wish. You need structural changes:
- Re-tier your SLA around exploitability, not CVSS. Create a P0 class: any high/critical CVE affecting an internet-facing asset, any CVE with public PoC, and every CISA KEV addition. P0 gets a 72-hour remediation SLA — matched to the observed weaponization window. Everything else can stay on the 14/30-day tracks.
- Establish an emergency change path now. Pre-approve emergency patching for edge devices with your CAB so a P0 CVE doesn't wait for Thursday's meeting. If your CAB process can't move in 72 hours, redesign it — attackers already redesigned theirs.
- Deploy virtual patching. Where a vendor patch requires downtime or isn't yet available, apply compensating controls within hours: WAF rules blocking the exploit pattern, ACLs restricting management interfaces to trusted networks, or temporarily disabling the vulnerable feature. Rapid7's report and vendor advisories routinely document workarounds — use them as a bridge, not a destination.
- Get management interfaces off the internet. A large share of rapidly exploited edge CVEs target admin portals. These should never be internet-reachable. Audit today; this single move neutralizes entire vulnerability classes before they're disclosed.
- Instrument the un-instrumentable. Edge appliances rarely support EDR. Forward their logs (syslog/CEF) to your SIEM, and apply the behavioral detections above to the servers behind them. Post-exploitation behavior — webshells, spawned shells, unexpected outbound connections — is your detection surface when the device itself is a black box.
- Feed KEV and exploit intelligence into your VM scanner daily, not weekly. Your vulnerability management platform should auto-escalate any finding where the CVE is in KEV, has public exploit code, or affects an internet-exposed asset tag.
The three-day window is not a future trend — it's the measured present. The organizations that absorb this shift are the ones that stop treating patch cadence as an IT operations metric and start treating it as what it is: a race against an opponent who has already started running.
Related Resources
Security Arsenal Incident Response Services AlertMonitor Platform Book a SOC Assessment incident-response Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.