A pre-authentication RCE in WordPress Core is about as bad as it gets
Every so often a vulnerability lands that clears the bar for “drop everything.” WP2Shell is one of them. It is a pre-authentication remote code execution flaw, and it lives in WordPress Core itself, not in some plugin you can uninstall. An anonymous attacker, with no account and no foothold, can run code against a stock WordPress install.
The one piece of good news is that it is already patched. So the story here is not really about the bug. It is about whether you act on it, and how fast.

What WP2Shell actually is
Three words explain why this one matters: core, unauthenticated, no preconditions.
“Core” means the vulnerable code ships with WordPress. You do not need a vulnerable theme or a risky plugin to be exposed. A clean, default install is enough. The flaw targets the WordPress REST batch API, a standard part of the platform.
“Unauthenticated” means the attacker does not need to log in. There is no password to guess, no session to steal. They just need to reach your site.
“No preconditions” means there is no special configuration required to be vulnerable. If you run an affected version, you are in scope.
WordPress powers a large share of the web, which is exactly what makes this class of flaw so serious. The same code runs on an enormous number of sites, so a single core bug is a skeleton key.
To their credit, the researchers who found it (SL Cyber) held back the technical exploit details on purpose, to give defenders time to patch before working attacks spread. We do not have a proof of concept, and we are not sharing one. What we are sharing is what to do about it.
Are you exposed
Check your version. The affected ranges are specific:
- WordPress 6.9.0 through 6.9.4 are affected.
- WordPress 7.0.0 through 7.0.1 are affected.
- WordPress 6.8.5 and earlier are not affected.
If you are on 6.9.x or 7.0.0/7.0.1, treat yourself as exposed until you have patched.
What to do now

Patch. That is the whole answer, and it is the right one.
- Update to WordPress 7.0.2, or to 6.9.5 if you are staying on the 6.9 branch. Both carry the fix.
- Do it now, not in next month’s maintenance window.
If you genuinely cannot patch immediately, put an interim mitigation in front of the site while you arrange the update. Block the batch endpoints at your WAF, or restrict anonymous access to the REST API. Concretely, block both forms the endpoint can take:
/wp-json/batch/v1?rest_route=/batch/v1
This is a stopgap, not a cure. Patch as soon as you can.
The part that actually earns its keep

Patching one known flaw is the easy part. Anyone can update a single site once they have been told to.
The hard part is knowing your whole estate is current, not just the site you happened to remember. It is knowing that the WAF rule you wrote a year ago still fires the way you think it does. And it is finding out about the next WP2Shell in time to matter, instead of reading about it after the fact. That is the real work, and it is the work that quietly protects a business between the headlines.
If you are not certain which WordPress versions you are running, or whether your defenses would actually hold, we can run a security audit and give you a clear, honest picture. No drama, just the facts about where you stand.
