This is a rapid explainer for a vulnerability that is being actively exploited (listed in CISA KEV). It covers what happens, who is affected and how to respond — from the defender's side, with no reproduction steps.
- CVE
- CVE-2026-87902 (GHSA-7hp8-65ch-5whp)
- Severity
- NVD: CVSS v3.1 8.1 (attack complexity high) / WordPress advisory: CVSS v4.0 9.2, Critical
- Type
- File inclusion (CWE-98) — path traversal in page-template resolution
- Impact
- Inclusion of .php files outside the theme; RCE when theme and server conditions line up
- Preconditions
- No authentication, no user interaction
- Affected
- WordPress 4.7.0–7.1.1
- Fix
- 7.1.2, released 22 September 2026, with fixes for every branch back to 4.7
- Exploitation
- In CISA KEV (added 25 September 2026, remediation due 28 September), flagged as requiring forensic triage
How dangerous is it to wait?
WordPress is the most widely used CMS, and this flaw spans roughly ten years of releases, with no authentication and no user interaction required. A WordPress-focused security firm reports that probing began the day the fix shipped, moved to code-execution attempts by the next day, and was folded into general-purpose scanning tools. Scanning is indiscriminate; the size of your site is irrelevant.
What kind of flaw is it?
WordPress decides which template file renders a page by looking it up in the theme directories. According to the advisory, that page-template resolution had a gap: an unauthenticated attacker could make it include a .php file outside the active theme's directories. When an outside value decides which file gets loaded, that is file inclusion (CWE-98). This site does not describe how it is exploited.
On its own that is not code execution. The advisory splits the conditions for RCE into a theme side and a server side.
Theme-side condition (per the advisory)
- The active parent or child theme has a top-level directory whose name starts with
page-(for examplepage-templates) - The advisory says this applies to the legacy Twenty Twelve and Twenty Fourteen themes and to some popular third-party themes such as Neve, Hestia and Sydney (the flaw is in core's handling, not in the themes)
Server-side condition (per the advisory)
- A .php file that behaves dangerously when included exists on the server and is readable by the web server account
- PHP's
register_argc_argvbeing on makes this condition much easier to meet - The advisory says the official PHP Docker image and the default cPanel configuration with PHP older than 8.5 are affected
① Core flaw: .php outside the theme can be included
→ fixed in 7.1.2 (and each branch's release)
② Theme condition: a directory starting with page-
→ hard to know for yourself; do not rely on judging it
③ Server condition: a dangerous .php is readable and register_argc_argv is on
→ turning the setting off prevents the whole class of attack
Who is affected
| Branch | Affected | Fixed |
|---|---|---|
| 7.1 | 7.1.0–7.1.1 | 7.1.2 |
| 7.0 | 7.0.0–7.0.5 | 7.0.6 |
| 6.9 | 6.9.0–6.9.8 | 6.9.9 |
| 6.8 | 6.8.0–6.8.9 | 6.8.10 |
| 6.7 to 4.7 | up to the release before each branch's fix | each branch's fix (6.7.9 … 4.7.37) |
| Before 4.7 | — | No fix (unsupported) |
What to do
Check your version and move to the fixed release (first priority)
In the dashboard, go to Dashboard → Updates and check the version. If it is not 7.1.2 (or your branch's fixed release), update today. Only the latest version is actively supported, so 7.1.2 is the safest target.
Find the sites automatic updates don't reach
On sites that support background updates, the update starts by itself. The risk is sites outside that path: auto-updates disabled, core pinned in Git or a container image (update it and a rebuild puts the old version back without warning), updates blocked by the host, and the old site nobody remembers. If you run several sites, check each one (security inventory checklist).
Turn off PHP's register_argc_argv (defense in depth)
PHP serving web requests almost never needs this setting. Set register_argc_argv = Off in php.ini (or your host's PHP settings); if you run in containers, check the image's configuration. It does not replace the update, but it cuts off a route from file inclusion to code execution that goes well beyond this one CVE.
Check whether you were entered before updating
If a site stayed unpatched after 22 September, treat that window as suspect; CISA also flags this CVE for forensic triage. At minimum check: (1) unfamiliar .php files in /tmp, /var/tmp or under wp-content; (2) access-log requests containing percent-encoded directory traversal (the equivalent of ../); (3) admin users or recently added plugins you do not recognise.
If anything looks wrong, don't stop at 'patched'
If code may have run, the patch does not remove files already placed on the server or keys already stolen. Rotate the database password and auth keys/salts in wp-config.php, admin passwords and third-party API keys, and remove suspicious files. The full process is in the vulnerability remediation playbook and WordPress security.
This site's view: once a fix is published, attacks start right away
In the recent Adobe Commerce case, 44 days passed between the fix and KEV. Here it was three. The difference is how readily the patch diff reveals the attack, and how many sites run the product. By the reported timeline, probing shaped like the diff started the same day the fix shipped.
The lesson: for a widely used product, a fix does not give you extra time. Attackers start working on it the moment it is published, and it is hard for people to keep up with that by hand. That is why this site ranks making sure automatic updates reliably arrive above patch process itself. Sites that received the auto-update were covered before their owners knew anything happened. The sites at risk are the ones that do not realise they sit outside auto-updates.
One more point: EPSS was 3%. EPSS is useful, but it lags for freshly disclosed flaws. When KEV and EPSS disagree, go with KEV — it is the confirmed fact.
Sources
- WordPress — GHSA-7hp8-65ch-5whp (affected and fixed versions, RCE preconditions, CVSS v4.0 9.2)
- WordPress.org — WordPress 7.1.2 Release (22 September 2026; backports to 4.7, automatic updates)
- NVD — CVE-2026-87902 (CWE-98, CVSS v3.1 8.1)
- CISA KEV — Known Exploited Vulnerabilities Catalog (added 25 September 2026, due 28 September, forensic triage required)
- FIRST — EPSS (0.029 on 25 September 2026)
- Observation report — Patchstack (probing from the day of the fix, code-execution attempts the next day; this article uses only the timeline and defender-side checks)
Read next
- Practice: WordPress security / The vulnerability remediation playbook
- Deciding: Prioritising with CVSS, EPSS and KEV
- The contrasting case: CVE-2026-71362 (Adobe Commerce: KEV 44 days after the fix)
- Terms: What is RCE? / What is path traversal?