WordPress security releases are easy to mentally file under “the site probably updated itself.” That is a comforting sentence. It is also not an operational control.
WordPress 7.0.2 landed on July 17, 2026, as a security release for one critical and one high-severity issue. WordPress recommends immediate updates and says forced updates were enabled through the auto-update system for affected versions. A few days later, CISA added the two related CVEs to its Known Exploited Vulnerabilities catalog, with one due date landing on July 24, 2026, and the other on August 4, 2026.
For most site owners, the useful response is not panic. It is verification. A WordPress core security release should trigger the same kind of boring, valuable habit as a certificate renewal audit: prove the whole path worked, then decide whether any exposed site needs deeper triage. CyganLabs made that point about renewal paths in https://cyganlabs.com/shorter-tls-certificates-renewal-window-audit/. The same principle applies here: the control is not “an update exists.” The control is “this site is actually on a fixed build, and we know what was exposed before that happened.”
What changed
The WordPress 7.0.2 release addresses two security issues. The first is a facilitated SQL injection issue involving the author__not_in parameter of WP_Query. NVD describes CVE-2026-60137 as affecting WordPress 6.8.x before 6.8.6, 6.9.x before 6.9.5, and 7.0.x before 7.0.2 when a plugin or theme passes untrusted input to that parameter.
The second issue is a REST API batch-route confusion weakness. NVD describes CVE-2026-63030 as affecting WordPress 6.9.x before 6.9.5 and 7.0.x before 7.0.2. In combination with the author__not_in SQL injection issue, it could allow SQL injection and remote code execution.
The affected branches matter:
- WordPress 7.0.2 fixes both issues for the 7.0 branch.
- WordPress 6.9.5 fixes both issues for the 6.9 branch.
- WordPress 6.8.6 fixes the SQL injection issue for the 6.8 branch.
- WordPress says versions prior to 6.8 are not affected by these issues, though that does not make old unsupported WordPress safe as a general operating choice.
That last caveat is not pedantry. WordPress documentation says only the most recent version is actively supported. Backports are useful, but they are not a reason to let old production sites drift into a museum exhibit with a login form.
KEV changes the priority conversation
CISA added CVE-2026-60137 and CVE-2026-63030 to the Known Exploited Vulnerabilities catalog on July 21, 2026. That means CISA has enough evidence to treat them as known exploited vulnerabilities. It does not prove every WordPress site is compromised, and the CISA entries list known ransomware campaign use as unknown.
It does mean “we will get to it next maintenance window” becomes a weaker answer, especially for public sites, agency systems, customer-facing installs, and anything with privileged editorial or commerce workflows.
CISA’s BOD 26-04 implementation guidance is written for federal agencies, but the operating pattern is broadly useful: scope the affected systems, preserve and collect relevant evidence when compromise is plausible, patch and stabilize, contain if needed, analyze what happened, and decide whether to escalate. CyganLabs covered the broader BOD 26-04 shift at https://cyganlabs.com/cisa-bod-26-04-fedramp-vulnerability-prioritization/. The short version for everyone else: known exploitation should change queue order, not just ticket color.
Verify the sites, not the announcement
Start with inventory. List every WordPress install you are responsible for, including staging sites, forgotten campaign microsites, client portals, intranet installs reachable through VPN, and anything parked behind a CDN rule that “should” make it private.
For each site, answer four questions:
- What WordPress core version is actually installed now?
- Was the site on 6.8.x, 6.9.x, 7.0.x, or 7.1 beta before the fix?
- Is the site publicly reachable by unauthenticated users?
- Is there custom plugin or theme code that passes user-controlled input into
WP_Query, especiallyauthor__not_in?
Do not stop at the dashboard banner if the site is important. Managed hosts, read-only deployments, file permissions, disabled update behavior, unusual release channels, or broken background tasks can all turn “automatic update available” into “someone assumed the happy path.” The WordPress release says automatic background updates should begin on sites that support them. That support is exactly what you need to verify.
This is also where WordPress as operational infrastructure matters. A site with shared AI connectors, automation hooks, editorial workflows, or external publishing integrations has more to lose from a compromised admin surface than a brochure site. That is the same operational frame CyganLabs used in https://cyganlabs.com/wordpress-ai-connectors-operational-infrastructure/: integrations are dependencies, and dependencies need ownership.
Patch first, then decide how much triage is justified
For a typical small site that updated promptly to a fixed release, the response can be simple: verify the fixed version, confirm backups are current, check that critical workflows still work, and watch logs and security tooling for anything strange.
For a public site that was still exposed after the KEV entries, treat it as a triage decision, not merely a patch task. The exact depth depends on the site’s role and risk, but the order matters:
- Preserve useful evidence before wiping caches, rotating everything, or rebuilding the host.
- Record the vulnerable version, exposure window, plugins and themes active during that window, and any custom code paths that touch
WP_Query. - Apply the fixed WordPress release or supported backport.
- Review administrative accounts, recent privileged activity, unusual file changes, unexpected plugin/theme modifications, and logs relevant to REST API and application requests.
- Rotate credentials if there is evidence of compromise, unexplained privileged access, or a high-value site where uncertainty is unacceptable.
There is no public universal indicator list in the sources for these CVEs. That is worth saying out loud. A careful operator should not pretend a single search string can clear the site. The question is whether the site was exposed, whether it was patched in time, and whether its logs and state show behavior that deserves incident response.
Check custom code, not just core
CVE-2026-60137 is especially awkward because NVD frames exploitation around a plugin or theme passing untrusted input to author__not_in. Core needed the fix, but the risky call path may live in custom site code.
If you maintain plugins or themes, search for uses of WP_Query, author__not_in, REST callbacks, AJAX handlers, shortcode handlers, and query builders that accept request parameters. The point is not to shame every dynamic query. The point is to find places where user input becomes query arguments without clear validation and type handling.
For agencies and teams, this is a good moment to separate “WordPress is updated” from “our WordPress estate is maintained.” The first is a version check. The second includes code ownership, plugin inventory, backup verification, log retention, update policy, and a tested path for urgent releases.
A practical checklist
For each production WordPress site, do this before closing the ticket:
- Confirm the site is on WordPress 7.0.2, 6.9.5, or 6.8.6 as appropriate.
- Confirm backups exist from before and after the update.
- Confirm the public site, admin login, editor, forms, search, commerce, membership, and API-dependent workflows still behave normally.
- Record whether the site was publicly exposed while vulnerable.
- Identify custom plugins, custom themes, mu-plugins, and must-keep third-party plugins that build
WP_Queryarguments from request input. - Preserve logs for the exposure window on sites where compromise would matter.
- Decide whether credential rotation, file integrity checks, or incident response escalation is justified.
The healthy posture is boring: update, verify, inventory, triage. The unhealthy posture is outsourcing the whole decision to an auto-update setting you have not checked since the last time everything was calm.
Sources
- WordPress 7.0.2 release: https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
- WordPress Version 7.0.2 documentation: https://wordpress.org/documentation/wordpress-version/version-7-0-2/
- GitHub advisory for GHSA-fpp7-x2x2-2mjf / CVE-2026-60137: https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-fpp7-x2x2-2mjf
- GitHub advisory for GHSA-ff9f-jf42-662q / CVE-2026-63030: https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-ff9f-jf42-662q
- NVD entry for CVE-2026-60137: https://nvd.nist.gov/vuln/detail/CVE-2026-60137
- NVD entry for CVE-2026-63030: https://nvd.nist.gov/vuln/detail/CVE-2026-63030
- CISA Known Exploited Vulnerabilities JSON feed: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
- CISA BOD 26-04 implementation guidance: https://www.cisa.gov/news-events/directives/bod-26-04-implementation-guidance-prioritizing-security-updates-based-risk