WordPress Core CVE-2026-119977: upgrade-window RCE now on CISA KEV (due Nov 6)
What happened
CISA added CVE-2026-119977 to its Known Exploited Vulnerabilities catalog on November 3, 2026 after confirming active exploitation. The flaw is a time-of-check time-of-use (TOCTOU) race in the WordPress Core upgrade process: predictable, web-accessible staging paths during full-package upgrades can let an unauthenticated attacker execute code on the server during the upgrade window. WordPress shipped the fix in 7.1.4 on October 28, 2026 (reported by Picus Security researcher Umut Bayram). Wordfence said it blocked more than 13,000 attack attempts targeting the bug in a 24-hour window.
Who's affected
Any site still running WordPress Core below 7.1.4 (or the matching security backport for older branches). Federal Civilian Executive Branch agencies must remediate by the CISA KEV due date of November 6, 2026.
✅ Fix / patch
- Update WordPress Core to 7.1.4 or the patched security release for your branch immediately (Dashboard → Updates, or your usual deploy path).
- Until patched, deny web access to /wp-content/upgrade/ at the web server, WAF, or CDN so staged upgrade files cannot be reached over HTTP.
- After updating, review web logs around any recent Core upgrade for unexpected requests under /wp-content/upgrade/ and check for unfamiliar plugins, themes, or admin users.
🔎 Quick hunt check
Look for HTTP requests to predictable paths under /wp-content/upgrade/ during or right after a Core update, especially from unfamiliar IPs, and for new PHP files or webshells dropped under wp-content shortly after an upgrade.
MITRE ATT&CK: T1190, T1059, T1505.003
IOCs
No IOCs (IPs, domains or hashes) published by the sources yet.
No public IOCs published for CVE-2026-119977 exploitation; Wordfence reported blocking attack volume without releasing indicators.
Hunt queries
Starting points built only from published indicators. Field names vary; tune before use.
index=* (uri_path="*/wp-content/upgrade/*" OR url="*/wp-content/upgrade/*" OR http_uri="*/wp-content/upgrade/*")
| stats count dc(src) as sources values(src) as src min(_time) as first max(_time) as last by uri_path, status, http_user_agent
| sort - countunion isfuzzy=true
(CommonSecurityLog | where RequestURL has "/wp-content/upgrade/"),
(AzureDiagnostics | where requestUri_s has "/wp-content/upgrade/"),
(DeviceNetworkEvents | where RemoteUrl has "/wp-content/upgrade/")
| summarize Hits=count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by SourceIP=coalesce(SourceIP, clientIP_s, InitiatingProcessRemoteIP), RequestURL=coalesce(RequestURL, requestUri_s, RemoteUrl), DeviceName⏱ CISA deadline
Sources
Related playbooks
- Ivanti Connect Secure: three-CVE chain gives unauthenticated root · Exploited vuln · 2026-10-30
- APT29 watering holes hit unpatched iOS/Android; CISA adds Apple CVE-2024-27834 to KEV · Exploited vuln · 2026-11-04
- Attackers drain BTCPay Server hot wallets on version 2.4.1 and older · Exploit · 2026-11-03
SockAnalyst