wp2shell: Critical WordPress core vulnerability actively exploited

The wp2shell WordPress core vulnerability explained: affected versions, security updates, immediate actions, compromise checks, and verified developments.

Topics Hardening & checklists

Lars Koudal

Updated Published

Latest developments

  1. Attack telemetry and post-exploitation reporting refreshed

    Wordfence published technical analysis and real attack data. Broader reporting confirms opportunistic webshell and malicious-plugin installs. Compromise checks and sources on this page were updated.

  2. Advisory published

    Initial advisory with affected versions, fixed releases, recommended checks, and primary sources.

  3. Added to CISA Known Exploited Vulnerabilities Catalog

    CISA added CVE-2026-63030 and CVE-2026-60137 to the KEV catalog based on evidence of active exploitation.

  4. WordPress security releases published

    WordPress 6.8.6, 6.9.5, and 7.0.2 were released with security fixes for the related core vulnerabilities.

WordPress core had a serious vulnerability (wp2shell). Updates are out. Confirm every site is on 6.8.6, 6.9.5, 7.0.2, or newer.

This is core, not a plugin. Auto-updates were forced for many installs, but still check the version yourself.

Exploitation moved quickly from probing to opportunistic takeovers. Security researchers have reported webshells and malicious plugins on compromised sites. CISA has listed both related CVEs in its Known Exploited Vulnerabilities Catalog.

Fixed versions

Confirm that every WordPress install is on 6.8.6, 6.9.5, 7.0.2, or newer. Updating closes the known holes, but it does not by itself prove a previously exposed site is clean.

Who is affected?

WordPress branchExposureFixed version
7.0 through 7.0.1Both vulnerabilities and complete attack chain7.0.2
6.9 through 6.9.4Both vulnerabilities and complete attack chain6.9.5
6.8 through 6.8.5Related SQL-injection vulnerability only6.8.6
Earlier than 6.8Not affected by these two vulnerabilitiesUpgrade to a currently supported branch

Older WordPress

Versions before 6.8 are not affected by these two vulnerabilities. That does not mean older or unsupported WordPress installs are generally safe. Unsupported branches still need a supported upgrade path.

WordPress 7.0.2 was released on July 17, 2026 and fixed one critical and one high-severity core issue. WordPress 6.9 is affected by both. WordPress 6.8 is affected only by the facilitated SQL-injection vulnerability. Because of the severity, WordPress enabled forced automatic updates for affected installations.

What site owners should do now

Do now

  1. Check the installed WordPress version (Dashboard → Updates, or the About WordPress screen / admin footer).
  2. Update to WordPress 6.8.6, 6.9.5, 7.0.2, or a newer secure release on your branch.
  3. Verify the update finished. Dashboard → Updates should show 6.8.6, 6.9.5, 7.0.2, or newer, not only a generic “you have the latest” message.

If you manage many sites, verify each install, not only the one you happen to have open.

Then check for compromise

  1. Check for unexpected administrator accounts, including odd usernames or email addresses you did not create.
  2. Review recently installed, uploaded, or modified plugins, including anything that looks like a renamed lookalike.
  3. Check for unexplained PHP files under uploads, cache, and other writable directories.
  4. Review hosting, firewall, WordPress, and application logs around the period the site may have been vulnerable. Pay attention to traffic hitting the REST API batch endpoint (/wp-json/batch/v1 or ?rest_route=/batch/v1), especially unusual Multi-Status (HTTP 207) responses.
  5. Investigate unexplained redirects, scheduled tasks, outbound requests, or newly created files.
  6. Change sensitive credentials when there are signs of compromise.
  7. Restore from a known-clean backup or get professional help when compromise is confirmed.

Changing passwords alone does not clean a compromised site. If you find clear signs of intrusion, treat credentials, files, and plugins as one problem, not separate chores.

Patched does not necessarily mean clean

Installing the update stops the known vulnerability from being used going forward. It does not undo anything an attacker may have done while the site was still vulnerable.

A fixed version in the dashboard is not the same as finishing a security check.

If you updated quickly and nothing looks wrong after a quick review, you may not need a full incident response. If you find suspicious accounts, files, plugins, redirects, or logs, dig deeper.

Rule of thumb

Update first. Then decide how deep to investigate based on what you find in users, plugins, files, and logs, not based on headlines alone.

What is wp2shell?

wp2shell is the informal name used for this WordPress core vulnerability chain in security discussions and tooling. The complete chain combines a REST API batch route/handler confusion issue with an SQL-injection issue.

At a high level:

  1. A WordPress REST API batch-processing issue can cause validation and execution to become associated with different route handlers.
  2. That confusion can expose a separate SQL-injection weakness in WP_Query.
  3. When chained, the vulnerabilities can let someone take over an affected site without logging in.

Wordfence recorded probing of WordPress REST API traffic on July 17, 2026, with a clear SQL-injection attempt minutes later. Later reporting from multiple vendors describes opportunistic campaigns that install webshells and malicious plugins after a successful chain. No exploit steps here on purpose.

Indicators worth reviewing

Treat these as areas to investigate, not proof that a website has been compromised:

  • Unexpected WordPress administrator accounts (including unusual login names or email domains)
  • Recently activated, uploaded, or installed plugins, including lookalike or unknown plugin folders
  • Modified theme or plugin PHP files
  • Unexpected PHP files in uploads, cache, or other writable directories
  • Requests involving the WordPress REST API batch endpoint (/wp-json/batch/v1 or ?rest_route=/batch/v1), especially HTTP 207 Multi-Status responses
  • User-agent strings that mention wp2shell or rezwp2shell (reported as tool signatures)
  • Unexplained scheduled events or cron tasks
  • Unfamiliar redirects or injected JavaScript
  • New outbound network connections
  • Changes to wp-config.php, .htaccess, server configuration, or must-use plugins
  • Security alerts around the time the site remained vulnerable

If you still have admin access, a malware scan and security tests can help surface suspicious files and configuration issues. For confirmed compromise, professional cleanup is often the safer path.

Does a firewall protect the website?

A web application firewall may block known attack patterns and reduce exposure while you update. Useful, but:

  • A firewall is not a substitute for installing the WordPress update.
  • Temporarily blocking anonymous access to the REST batch endpoint at the edge can buy time while you patch. It is not a permanent fix.
  • Rules differ between vendors and hosting providers.
  • Confirm both the WordPress version and any protection status.
  • A firewall cannot clean a site that was already compromised.

A security plugin does not replace applying the official WordPress security releases for this issue. WP Security Ninja can still help with monitoring and scanning after you update.

Frequently asked questions

Is wp2shell a plugin vulnerability?

No. It is a WordPress core vulnerability chain. Plugins and themes are not the root cause of these two issues, though a compromised site may still show malicious plugins or file changes after exploitation.

Which WordPress versions are affected?

WordPress 7.0 through 7.0.1 and 6.9 through 6.9.4 are affected by both issues in the chain. WordPress 6.8 through 6.8.5 is affected by the related SQL-injection vulnerability only. Fixed releases are 7.0.2, 6.9.5, and 6.8.6.

Did WordPress update automatically?

WordPress enabled forced automatic updates for affected installations because of the severity. You should still verify that every site reached a fixed version. Automatic updates can fail on some hosts, locked files, or heavily customized setups.

How can I check my WordPress version?

In wp-admin, open Dashboard → Updates, or check the version shown on the About WordPress screen / admin footer (depending on your setup). Hosting panels and WP-CLI (wp core version) also report it.

Does updating prove my website is clean?

No. Updating closes the known vulnerabilities going forward. It does not undo earlier unauthorized changes. Investigate if you see suspicious accounts, files, plugins, redirects, or logs.

Should I disable the REST API?

Disabling the REST API is not the recommended fix and can break legitimate features. Install the official security update for your WordPress branch instead. If you cannot update immediately, a temporary edge rule against anonymous batch REST access is a bridge, not a replacement for the core release.

Does a security plugin replace the update?

No. Update WordPress first. Security plugins can help with detection, monitoring, and layered protection, but they do not replace applying the core security releases.

What should I do if I find an unknown administrator?

Treat it as a serious indicator. Do not only delete the user and move on. Investigate how it was created, review plugins and file changes, rotate credentials, and consider a full malware review or cleanup help.

Are WordPress versions before 6.8 safe?

They are not affected by these two specific vulnerabilities. That is not the same as being secure or supported. Unsupported versions still need upgrading to a currently maintained branch.

Where can I follow new developments?

Watch the WordPress.org news post for 7.0.2, the CISA KEV catalog, and this advisory page. We update the Latest developments section when something material changes.

After you update

Keeping WordPress updated is the first line of defense. When you are ready for extra monitoring, WP Security Ninja can help review configuration, watch security events, and spot suspicious changes. Pricing and trials are there if you want Pro later.

Sources

Reference IDs

  • CVE-2026-60137, CVE-2026-63030
  • GHSA-fpp7-x2x2-2mjf, GHSA-ff9f-jf42-662q

Found this useful? Share it.