Click2Shell and the 17 September WordPress security release (CVE-2026-93485)

The patched release for every WordPress branch back to 4.7, what the reported Click2Shell chain actually needs before it works, why the 9.6 in the headlines is not WordPress's own rating, and the one trace a forced theme install leaves behind.

WordPress shipped eleven security fixes on 17 September 2026. Two of them carry the news: a link that makes an administrator install a theme they never chose, and a stored cross-site scripting flaw in the function that formats nearly every piece of content WordPress renders.

The first is the one with a name. Researchers at pwn.ai chain the forced theme install and preview into code execution on the server and call it Click2Shell. The second is CVE-2026-93485, an unauthenticated stored cross-site scripting flaw in wpautop(), reached through a comment.

The instruction is the boring one: update WordPress. The part worth reading carefully is what the version number does, and does not, tell you afterwards.

The patched version for your branch

Every branch that still receives security fixes got a backport, currently as far back as 4.7. Compare your site against the patched release for its own branch. A site on 6.8.9 is current. A site on 7.0.4 is not, even though the number is higher.

BranchFirst patched release
7.17.1.1
7.07.0.5
6.96.9.8
6.86.8.9
6.76.7.8
6.66.6.8
6.56.5.11
6.46.4.11
6.36.3.11
6.26.2.12
6.16.1.13
6.06.0.15
5.95.9.17
5.85.8.16
5.75.7.18
5.65.6.20
5.55.5.21
5.45.4.22
5.35.3.24
5.25.2.27
5.15.1.25
5.05.0.28
4.94.9.32
4.84.8.31
4.74.7.36

WordPress 4.6 and earlier receive no security updates. There is no patched release for those branches and moving to a supported one is the only fix.

One thing to watch if you patched in August: those releases do not cover this one. The 6 August fixes landed on 7.0.3, 6.9.6 and 6.8.7, the 12 August Imagick fixes on 7.0.4, 6.9.7 and 6.8.8. Each September patch sits one release above.

What the chain actually needs

The reported attack starts with a link. An administrator who is logged in opens it, and their own browser is made to install and preview a theme the attacker picked. That much is the WordPress bug, and it is what 7.1.1 fixes.

Code execution is the next step, and it is not WordPress's code that runs it. The chain needs the installed theme to have a handler of its own that executes attacker input. So three things have to be true at the same time:

  • an administrator is logged in and opens the crafted link,
  • the site still allows theme installs, which most do,
  • the theme the attacker chose carries a flaw of its own.

None of that makes it theoretical. It makes it conditional, and the conditions are worth knowing because they are also the things you can check.

Why the ratings disagree

You will see 9.6 in the headlines. That is the researchers' rating for the complete chain, end to end. WordPress rates its own fix for the forced install as medium. Wordfence scores that record 4.3. The unauthenticated stored XSS in the same release scores 7.2.

All three can be right at once, because they are measuring different things: the whole chain, the one bug WordPress fixed, and the separate XSS. When a vendor and a researcher disagree by five points, the useful move is to read what each number covers rather than pick the loudest.

Respira lists this advisory as high. Not 9.6, because the conditions are real, and not medium, because the outcome at the end of the chain is somebody else's code on your server.

The other half of the release

CVE-2026-93485 is the one more sites are exposed to in practice. wpautop() formats almost everything WordPress renders, and the flaw is stored: the payload lives in content and fires for whoever loads the page.

What stands between a visitor and that payload is comment approval. A site that holds comments for moderation has a gate. A site that auto-approves comments, or approves them in bulk without reading them, does not. If that is you, it is worth a look at your discussion settings today.

What to check after updating

Updating closes the door and undoes nothing that happened before it. The version on the site cannot prove the site was never exposed, so here is what can be checked:

  • Themes. A forced install leaves the theme behind. Look for themes installed on or after 17 September that nobody remembers installing, and inactive themes you cannot account for. This is the one trace the chain is not able to avoid leaving.
  • Administrators. Accounts created or promoted since that date. Confirm each one with whoever runs the site, and never decide from a name or a registration date that an account is fine, or that it is not.
  • Application Passwords. An update does not revoke one. Revoke anything unrecognised or no longer needed.
  • Unexpected PHP files in theme, plugin, mu-plugin and uploads directories.

If something turns up, restoring from a backup taken before the exposure window beats cleaning by hand. And do not run broad SQL deletes out of a cleanup guide: WordPress content and metadata look similar to the artefacts people tell you to delete.

Checking more than one site

One site is a two-minute job. Twenty client sites is the part that does not get done, which is why the version spread across a fleet is usually worse than anyone expects.

Respira's WordPress vulnerability scanner compares each connected site against this advisory and against the whole Wordfence Intelligence database, refreshed every six hours, and says which branch patch each site needs. A site that already carries the fix is reported as patched with the review still open, rather than as clean, because the two are different claims and only one of them is provable from a version number.

From there the fix is approval-gated: the agent proposes the exact branch update, you approve it, and a second scan produces the receipt. Nothing updates because an AI thought it should.

Sources

Checked on 22 September 2026. If a version in the table stops matching the official release notes, the release notes are right and this page is stale.

Join the conversation

0 comments · Respira account

No comments yet. Be the first to weigh in.

You're not the only one talking to WordPress.

The Respira community is where agency owners debug Divi migrations at 11pm, where vibe coders swap prompts that actually ship, and where the roadmap gets written out loud. Breathe with us.

Lines of code pushed through Respira
17,310,587
Live from the Respira ecosystem · updates as the agent ships