Skip to content

How to Fix PHP2Shell (CVE-2026-109618 & 109619) PHP Sites

How to Fix PHP2Shell (CVE-2026-109618 & 109619) PHP Sites
How to Fix PHP2Shell (CVE-2026-109618 & 109619): WordPress & Sites

LIVE UPDATE · Oct 23, 2026
Several security firms report attacks in the wild, although CISA said on Oct 21 it had not yet observed exploitation. Many hosts have patched since Oct 21, but not all. Check your host · Read today’s news
Do this in 10 minutes
  1. Check your PHP version (Step 1, or use the checker below).
  2. Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 (or a vendor-patched package), then restart it.
  3. Ask your host to confirm the fix, then scan for unknown files.
9.2CVSS severity (critical)
~70%of websites run PHP
10+years the bug lived in PHP
Oct 212026 fixes released

A critical flaw in PHP, the language behind WordPress, WooCommerce, Drupal and Joomla, lets attackers take over a web server without logging in. It is called PHP2Shell and covers two bugs, CVE-2026-109618 and CVE-2026-109619. This guide explains it in plain English and walks you through protecting your site, from zero to done.

Quick check: is my PHP version patched?

Type your version (for example 8.3.35). Nothing is sent anywhere.

What is PHP2Shell, in plain English?

Every web page on a PHP site is built by PHP on the server. The researchers found that when PHP runs out of memory in a certain way while handling a request, it can leave its internal state damaged. A skilled attacker can abuse that damage to run their own commands. Because this happens before any login, passwords do not protect you.

How PHP2Shell works: 1 Request, 2 Error, 3 Takeover. The fix is to update PHP to a patched version, then restart PHP.
Simplified flow. Real attacks are more complex, but the idea is the same.

The bugs sat in PHP for more than a decade. Researchers at OpenAI, Wiz and Calif used advanced AI to find them and show a working exploit against fresh WordPress, Drupal and Joomla installs. That matters: AI makes old, hard-to-exploit bugs practical to attack.

What has already happened (real-world timeline)

  • August 2026Researchers at Wiz, OpenAI and Calif find the flaws with AI tools and report them privately to the PHP team.
  • October 17Amazon’s honeypots log the earliest known exploit attempt, four days before disclosure. Amazon described it as largely a one-off probe.
  • October 20Details leak online ahead of the planned disclosure. PHP announces an emergency release for the next day, and CERT-EU publishes an advisory.
  • October 21, 14:00 UTCPHP releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35, plus source-only fixes for retired 7.4, 8.0 and 8.1. CISA urges immediate patching, and Cloudflare reports attack attempts within hours.
  • October 21, same dayHosts announce firewall protection while they roll out patches. Some government sites in Finland, the Netherlands and France went offline temporarily. A separate Node.js remote-code-execution flaw is announced.
  • October 22More hosts finish. Trackers list Cloudways, Kinsta and GoDaddy Web Hosting as patched, while Bluehost and DreamHost were still rolling out.
  • October 23Security firms keep publishing scanning and detection guidance, and Qualys updates its exposure numbers.

Latest news: October 23, 2026

Attacks
Exploitation is under way

Amazon logged the earliest attempt on October 17. More proof-of-concept attempts followed on release day, and Cloudflare reported attack attempts rising fast within hours. CISA said on October 21 it had not yet observed exploitation, so reports differ. Assume you are a target.

Source: The Hacker News · Cloudflare

Exposure
Most PHP is still old

Qualys analysed data from 12,000 customers and found about 110 million PHP installations (71%) on end-of-life or end-of-support versions, from 5.4 to 8.1. Only about 199,000 were patched in the first 12 hours.

Source: Qualys

Data leak
Secrets can leak too

Researchers also showed that an attacker with no login can read PHP worker memory, which can hold passwords, authentication tokens and API keys. That is why this guide tells you to rotate secrets.

Source: Qualys

Risk level
Apache mod_php is most exposed

Setups using mod_php face the greatest danger, and the attack can run before WordPress or any plugin loads, so a security plugin never sees it. Wordfence told owners the fix cannot arrive through automatic updates.

Source: Help Net Security · Martin Cid

Hosts
Providers are catching up

A tracker updated on October 22 lists Cloudways, Kinsta and GoDaddy Web Hosting as patched, GoDaddy VPS as self-managed, Bluehost still patching and DreamHost in final tests. Status changes hourly, so confirm with your host.

Source: ActiveSet tracker · Meow Apps

Next
More bugs are expected

OpenAI says it is fixing other significant bugs found with its models, including the Node.js remote-code-execution flaw announced the same day, and expects many more findings in coming months.

Source: Decrypt

Which PHP versions are fixed?

Chart: PHP versions and which fixed release to update to Which PHP version are you on? PHP 8.5Patch availableUpdate to 8.5.12 or newer PHP 8.4Patch availableUpdate to 8.4.27 or newer PHP 8.3Patch availableUpdate to 8.3.36 or newer PHP 8.2Patch availableUpdate to 8.2.35 · support ends Dec 31, 2026 PHP 8.1 / 8.0 / 7.4Vendor patch onlyNo official release · vendor package or upgrade PHP 7.3 and olderNo fixNot fixed upstream · upgrade as soon as possible
Fixed releases published October 21, 2026. Source: PHP advisory and vendor notices.

PHP’s security team also published minimal source backports for 7.4, 8.0 and 8.1, and some Linux vendors ship patched packages even for retired branches. One scan counted roughly 884,000 internet-facing servers advertising PHP 8.1 or older, which is why old versions are the biggest worry.

Am I at risk? Pick your hosting type

Most common
Shared hosting (cPanel, Plesk, hPanel)

You cannot patch PHP yourself. Switch to the newest PHP in your panel and ask your host in writing to confirm they applied the fix. If they have no plan, that is a sign to consider moving.

Advanced
VPS or dedicated server

You own the patching. Update packages, restart PHP-FPM, check every site on the box including staging and forgotten subdomains.

Hands-off
Managed WordPress / cloud platform

Your provider usually patches the runtime. Check their status page or open a ticket, and still update WordPress and plugins yourself.

Developers
Docker and containers

Rebuild from a fixed tag (8.5.12, 8.4.27, 8.3.36 or 8.2.35) and redeploy. Updating a running container does not change the image it came from.

Contact your hosting provider: what to ask

The fix lives on the server, so your host has to install it. Many hosts first added a firewall rule or switched off risky PHP features. That helps, but PHP says such measures block only some routes, so keep asking until you hear that PHP itself is updated.

Copy & paste
Message for your host (English)
Hi, my website (yourdomain.com) runs PHP [your version]. Has the PHP fix for PHP2Shell (CVE-2026-109618 and CVE-2026-109619) been installed on my server? If yes, please tell me the PHP build or package version and when it was installed. If not, when will it be? Please reply in writing. Thank you!
Follow-up
5 questions to ask
  1. Is the fixed PHP build installed on my server? Which package or version?
  2. When was it installed, and were all PHP workers restarted?
  3. Is my site served by mod_php or PHP-FPM?
  4. Is my PHP version (for example 7.4 or 8.1) covered by a vendor backport, and which newer version can I switch to?
  5. Did you scan my account for signs of compromise, and can you restore a clean backup if needed?

Tips: use live chat or a support ticket so you get a written record, and keep a screenshot of the reply. If there is no clear answer in 24 hours, take a backup, put Cloudflare in front of the site as a temporary layer, and start comparing other hosts.

Top hosting providers: PHP2Shell status

Reported by each host and by independent trackers on October 22–23, 2026. These change by the hour, so always confirm on the host’s own page or by ticket. Local or smaller hosts are not listed: use the message above.

HostStatusWhat it means for youOfficial page
SiteGroundProtectedServer-level protection, affected PHP features switched off. Host says customers need do nothing.Host blog
HostingerMostly patchedFirewall rules first, then patched PHP on managed plans. VPS customers must update themselves.Check hPanel and Hostinger’s own blog
Bluehost / HostGatorRolling outMost servers updated as of Oct 21–22, rest still in progress. Ask support; VPS or dedicated: update packages.Ask support
CloudwaysPatchedPatched on Autonomous and Flexible (Oct 22).Status page
KinstaPatchedTracker shows the incident resolved Oct 22. Kinsta emails you when your site is patched.Community post
WP EnginePatched (reported)Fix reported fully deployed Oct 22, covering the PHP versions it runs.Status page
GoDaddyHosting patchedWeb Hosting patched. VPS is self-managed, so update PHP yourself.Announcement
NamecheapAlmost donePublic services protected, patch nearly deployed Oct 22. Own VPS or dedicated: update yourself.Status page
DreamHostRolling outFixed PHP on much of the fleet, rest in final testing. Old PHP versions have mitigations meanwhile.Status page
InMotionRolling outDedicated done, VPS in progress, shared hosting protected while waiting for the patch.Status page
OVHcloudPatchedWeb hosting patched on all clusters, PHP 7.4 to 8.5.Status page
Liquid WebRolling outFixed builds out for cPanel and Plesk servers, deploying across hosting.Status page
PantheonPatchedLive sites on PHP 8.2 to 8.5 patched. Older versions wait for vendor fixes.Status page

Step-by-step: protect your site

Follow the steps in order. Total time is roughly one hour, and most of it is waiting on backups.

Step 1 · 2 min
Find your PHP version

WordPress: Tools → Site Health → Info → Server.

Hosting panel: cPanel MultiPHP Manager, Plesk PHP Settings, or the PHP section of your host’s dashboard.

VPS / server: php -v shows the command-line PHP, which can differ from the PHP that serves your website. Check the web one too (the name varies by setup):

php -v
php-fpm8.3 -v

Note the version, then use the checker above.

Step 2 · 5 min
Take a backup first

Back up files and database, and keep a copy off the server. Many hosts offer one-click snapshots. A backup you have never restored is only a hope, so try a test restore on staging when you can.

Step 3 · 5–20 min
Update PHP
  • Shared hosting: choose the newest PHP your panel offers (8.3 or 8.4 is a good target), then open a ticket asking the host to confirm the PHP2Shell patch is applied. A panel label like “8.3” does not show the patch level.
  • VPS / dedicated: update through your package manager.
  • Managed WordPress hosting: check the provider’s status page or ask support.
  • Docker: change to a fixed image tag such as php:8.4.27-fpm, then rebuild.
# Debian / Ubuntu
sudo apt update && sudo apt upgrade

# AlmaLinux / RHEL / Rocky
sudo dnf upgrade 'php*'

# Docker Compose
docker compose pull && docker compose up -d --build
Step 4 · 1 min
Restart PHP (people forget this)

An update does nothing until the old PHP workers are replaced. On a server, restart PHP-FPM, or Apache if you use mod_php. On shared hosting, switching the version in the panel does this for you.

sudo systemctl restart php8.3-fpm
# Apache with mod_php:
sudo systemctl restart apache2
Step 5 · 3 min
Verify it worked

Check the version again, then open your homepage, login page and (for stores) the checkout. Linux vendors sometimes patch PHP without changing the version number, so also look for the CVE numbers in the package changelog or your vendor’s advisory.

php -v
apt changelog php8.3-fpm | grep -i 109618
rpm -q --changelog php | grep -i 109618
Step 6 · 10 min
Update WordPress, WooCommerce and plugins

PHP is the engine, but old plugins are still the most common way sites get hacked. Update core, themes and plugins, and delete anything you do not use. With WP-CLI:

wp core update
wp plugin update --all
wp theme update --all
Step 7 · 15 min
Harden the site (limits the damage)
  • Turn on two-factor login for every admin and use unique passwords.
  • Keep only the admin accounts you really need.
  • Disable the dashboard file editor: define('DISALLOW_FILE_EDIT', true); in wp-config.php.
  • Block PHP from running inside the uploads folder. On Apache, put this in wp-content/uploads/.htaccess (test your site afterwards):
<FilesMatch "\.php$">
  Require all denied
</FilesMatch>

A firewall such as Cloudflare WAF is a useful extra layer, but PHP says no setting fully fixes these bugs. Patching is the fix.

Step 8 · 10 min
Check whether you were already hit

Details leaked and attack attempts were reported around disclosure, so look after patching. These WP-CLI and shell commands are read-only:

wp core verify-checksums
wp user list --role=administrator
find wp-content/uploads -name "*.php"

Any PHP file inside uploads, unknown admin user, or changed core file needs attention. See the warning signs below.

Can’t patch today? Temporary protection

PHP is clear that only an update is a complete fix. If you must wait for your host, these stopgaps reduce risk for a short time. Keep them until PHP is updated, restarted and verified.

Cloudflare WAF · ~10 min
Put a firewall in front
  • Cloudflare turned on PHP2Shell protection for every plan with its WAF on, including Free, from Oct 21 at 03:02 UTC, about nine hours before public disclosure.
  • It only helps if your visitors really go through Cloudflare (site proxied).
  • Free plan: the rules arrive automatically in the Managed Free Ruleset. Pro, Business, Enterprise: check your Managed Ruleset is deployed in block mode.
  • See what was blocked under Security → Security Analytics → Events.
  • Keep it on after patching. Cloudflare itself says to update PHP as well.

Cloudflare announcement · WAF changelog

Server admins only
PHP’s official stopgap settings

Put these in php.ini or the FPM pool (not ini_set() or .user.ini), then restart every PHP worker. They block only some attack paths.

memory_limit = -1
post_max_size = 8M        ; 32M if you need uploads
upload_max_filesize = 2M  ; keep below post_max_size
session.upload_progress.enabled = 0
; PHP 8.5 only:
fatal_error_backtraces = 0

memory_limit=-1 looks odd, but PHP lists it. Pair it with a container or cgroup memory limit, and do not use RLIMIT_AS or RLIMIT_DATA. Also limit request size and multipart parts at your web server or proxy.

Shared hosting
You cannot edit these settings

Ask your host to apply them, or better, to confirm the real PHP patch. Use the message earlier in this guide.

Let an AI assistant audit your server (copy-paste prompt)

If you use a coding agent such as Claude Code or Codex that can read your repo or reach your server, this prompt tells it to inventory every PHP install, classify each as patched, vulnerable or unknown, and report back. It is built from PHP’s advisory, works read-only and must ask before changing anything.

Before you use it
Safety rules for AI on your server
  • Give it read-only access first. Do not hand an AI root access to production.
  • Read every command it proposes before approving it.
  • It cannot see inside shared hosting, so your host still has to confirm the patch.
  • Treat its report as a starting point and verify the versions yourself.
Show the full prompt
TASK: Audit my PHP setups for PHP2Shell (CVE-2026-109618 and CVE-2026-109619) and help me fix them.

SOURCE OF TRUTH: re-read the official advisory first, it may have been updated:
https://www.php.net/archive/2026.php#2026-10-21-5
Fixed releases: 8.5.12, 8.4.27, 8.3.36, 8.2.35. PHP 8.1 and older get no official release (PHP also published source backports for 7.4, 8.0 and 8.1).

RULES
- Read-only discovery is fine. ASK ME before changing anything, restarting services, or touching production or shared hosting.
- Do not guess. If you cannot confirm a version, mark it UNKNOWN.
- Do not stop at the first finding. Inventory everything, then report.

STEP 1 - INVENTORY every place PHP runs
- Repo files: composer.json / composer.lock (require.php, config.platform.php), Dockerfile*, docker-compose*, .php-version, .tool-versions, .devcontainer, CI files (setup-php, image: lines), Terraform / Ansible / Helm / k8s, PaaS config.
- Base images: every FROM php:*, wordpress:*, bitnami/*, serversideup/*, dunglas/frankenphp* with its tag.
- Machines and containers I can reach: php -v, php-fpm -v, php -i | grep -i "server api", apachectl -M | grep -i php, docker ps and docker exec <container> php -v.
- Note the SAPI of each (FPM, mod_php, CGI, FrankenPHP, LiteSpeed, CLI-only) and any long-running workers (Octane, RoadRunner, Swoole, FrankenPHP worker mode).
- If no PHP exists anywhere, tell me and stop.

STEP 2 - CLASSIFY each instance as PATCHED, VULNERABLE or UNKNOWN
- Upstream builds are vulnerable below 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35.
- 8.1 and older: vulnerable unless a vendor backport is confirmed.
- Distro packages often backport fixes without changing the version, so check the changelog for the CVE IDs:
  apt changelog <pkg> | grep -E "CVE-2026-10961[89]"
  rpm -q --changelog <pkg> | grep -E "CVE-2026-10961[89]"
- rpms.remirepo.net: PHP says it will not have same-day updates. Recommend distro packages or building from source.
- Managed or shared hosting, or PaaS: mark UNKNOWN and tell me to ask the provider.

STEP 3 - FIX (only after I approve the plan)
- Upgrade to a fixed version or vendor-patched package: bump Docker tags and rebuild, update CI pins, run apt / dnf / apk upgrades.
- Restart EVERY PHP worker (FPM pools, Apache, FrankenPHP, LiteSpeed, Octane / RoadRunner / Swoole). Old processes keep running vulnerable code.
- Re-verify each instance (version and changelog) and show me the evidence.

STEP 4 - TEMPORARY MITIGATIONS, only if patching must wait (they reduce exposure but do NOT make anything safe)
- Set them in php.ini / the FPM pool / server config, never ini_set() or .user.ini, then restart all workers.
- CVE-2026-109618: memory_limit=-1 set so apps cannot override it; post_max_size 8M (no uploads) or 32M (uploads) with a lower upload_max_filesize; request-size, field-count, multipart-part and header limits at the web server or proxy; container/cgroup memory limits (do NOT use RLIMIT_AS or RLIMIT_DATA).
- CVE-2026-109619: session.upload_progress.enabled=0; on PHP 8.5 fatal_error_backtraces=0; remove invalid or deprecated per-request settings that emit early diagnostics; fix attacker-reachable fatal errors and timeouts.
- If the site is behind Cloudflare, confirm the WAF Managed Ruleset is in block mode. This is an extra layer, not a fix.

STEP 5 - LOOK FOR SIGNS OF COMPROMISE (read-only; keep evidence, delete nothing)
- Error logs: segfaults, "Allowed memory size exhausted", worker crashes, especially near very large POST or multipart requests.
- New or modified files in web roots (possible webshells), new cron jobs, unexpected processes or outbound connections from PHP users.

FINAL REPORT
Give me a table: location | how PHP is provided | SAPI | version | status | action taken or needed.
Then list: what you changed, what still needs my approval, what needs my hosting provider, any stopgap mitigations and when to remove them, and any compromise indicators.

Update WordPress and old plugins (login and database)

Updating plugins does not fix PHP2Shell, because the bug is in PHP. You still need to do it for two reasons. First, the PHP upgrade is where outdated plugins break, and that is the main reason sites stay on old PHP: one monitoring firm found 22.7% of the WordPress and Joomla sites it watches on PHP 8.1 or older the day before the release. WordPress recommends PHP 8.3 but still lists 7.4 as compatible. Second, plugins that handle login and the database hold the keys to your site, so they decide how bad a break-in gets.

Plugin typeWhat it doesRisk when oldWhat to do
Login & securitySecurity and firewall plugins, 2FA, social login (for example Google sign-in), custom login URL, captcha, membership and WooCommerce accountsAuth bugs, or a lock-out when an old version breaks on new PHPUpdate first, and set up emergency access before changing PHP (see below).
Database & dataBackup, migration and cloning, database cleaners, search-replace, import/export, form-entry and cache pluginsThey read and write your whole database, so they are attractive targets when oldUpdate or delete. Never leave database-admin tools installed. Test a restore.
Store & ordersWooCommerce plus payment, shipping and courier pluginsOften the reason a store is stuck on old PHPTest checkout on staging, ask the developer for a PHP 8.3+ release, or replace.
2 minutes per plugin
How to judge a plugin
  • Open its WordPress.org page and check Last updated, Tested up to and Requires PHP.
  • Read recent support threads for PHP 8 errors.
  • Search it in the Patchstack or Wordfence vulnerability databases.
  • No update in about two years? Treat it as abandoned and plan a replacement (rule of thumb).
Real example
Old plugins break on new PHP

In January 2026, host Tiger Technologies reported that older versions of the Wordfence security plugin were incompatible with newer PHP releases, so it auto-updated Wordfence for customers. Lesson: turn on auto-updates for trusted plugins. Read the note

Safe order
Update, then upgrade PHP
  1. Back up files and database (wp db export before-update.sql with WP-CLI).
  2. Update WordPress core, theme and plugins, on staging if you have it.
  3. Replace any plugin that is abandoned or says it needs old PHP.
  4. Switch PHP to 8.3 or 8.4, or let your host apply the fixed build.
  5. Test login (including 2FA and social login), checkout, forms and backups, then read the PHP error log.
  6. Locked out? Rename the plugin folder in wp-content/plugins through File Manager or FTP to switch it off.
wp plugin list --update=available
wp plugin list --fields=name,status,version,update_version
wp db export before-update.sql
After patching
Rotate your secrets

Because attackers can read PHP memory, treat passwords and keys as possibly exposed if your site ran unpatched PHP on or after October 21. Change WordPress admin, hosting and SFTP passwords, the database password (and update wp-config.php), the security salts (generator), and payment, courier and API keys.

The 6 layers of protection

1
Patch PHP

Install the fixed release or a vendor-patched package. This is the real fix.

2
Restart and verify

Restart PHP-FPM or Apache, then check the version and package changelog.

3
Update WordPress and plugins

Update core, themes and plugins, and delete what you do not use.

4
Harden logins

Two-factor login, fewer admins, no file editor, no PHP in uploads.

5
Add a firewall

Cloudflare WAF or your host’s firewall as a temporary extra layer.

6
Back up and monitor

Off-site backups, a tested restore, and regular file and log checks.

Patching comes first. Every other layer reduces damage if something slips through.

Running a store? Extra tips for WooCommerce

E-commerce
Orders, customers and payments are the prize
  • Test on staging before jumping PHP branches. Old payment, shipping and courier plugins are the usual reason stores stay on old PHP. If a plugin only works on an old version, ask its developer for an update or replace it.
  • Short-term safe move: the latest patch of your current supported branch (for example 8.2.35) is better than waiting. Plan the move to 8.3 or 8.4 afterwards, since 8.2 security support ends Dec 31, 2026.
  • If you suspect a breach: rotate payment-gateway and courier API keys, and check recent admin and order exports for anything odd.
  • Keep a recent off-site backup of orders so you can restore quickly.

Warning signs you may have been hacked

Warning sign
Unknown PHP files

Especially inside wp-content/uploads, where only images and documents should live.

Warning sign
New admin users

Check Users → Administrators for names you do not recognise.

Warning sign
Changed core files

wp core verify-checksums compares WordPress files with the originals.

Warning sign
Spam in Google

Search site:yourdomain.com for pharma, casino or foreign-language pages you never wrote.

Warning sign
Odd traffic or CPU

Sudden spikes, or a host warning about outgoing spam or resource use.

Warning sign
Redirects on mobile

Visitors sent to strange sites, sometimes only on phones or from Google.

If you find something
Do not just delete and hope
  • Save a copy of the suspicious files and logs first, and tell your host.
  • Restore from a clean backup or rebuild, then patch PHP before going live again.
  • Change all passwords, database credentials, salts in wp-config.php and API keys.
  • On a store, contact your payment provider and check your local privacy-law duties if customer data may be exposed.

6 common beginner mistakes

Mistake
Updated but never restarted

Old PHP workers keep running the vulnerable code. Restart PHP-FPM or Apache.

Mistake
Checked the wrong version

php -v on a server shows command-line PHP, not always the web one.

Mistake
Forgot the forgotten sites

Staging copies, old subdomains and abandoned test installs are easy targets. Make an inventory.

Mistake
Trusted a firewall alone

A WAF helps, but the vulnerability is in PHP. Patch first.

Mistake
Installed a “PHP2Shell fix” plugin

No WordPress plugin can patch PHP. Expect scam emails and fake fixes during big news like this; only follow your host, php.net and official advisories.

Mistake
Hiding the PHP version

Turning off version headers is fine hygiene, but it does not close the hole.

The A to Z of PHP2Shell protection

Bookmark this glossary. Each letter is one idea you can act on.

AApply the updateInstall the patched PHP release.
BBackupFiles and database, stored off-server.
CCVECVE-2026-109618 and 109619 are the official IDs.
DDisable file editorAdd DISALLOW_FILE_EDIT in wp-config.php.
EEnd of lifeOld PHP gets no upstream fix. Move up.
FFirewallExtra layer, never the only one.
GGet it in writingAsk your host to confirm the patch.
HHosting panelWhere shared hosting switches PHP version.
IInventoryList every site, staging copy and subdomain.
JJust a restartUpdated packages still need a restart.
KKeysRotate passwords and API keys if hit.
LLogsLook for strange requests and new files.
MMalware scanRun one after patching.
NNotifyTell your host or team early.
OOld pluginsDelete what you do not use.
PPatch levelBranch (8.3) is not enough; know 8.3.36.
QQuarantineKeep suspicious files as evidence before cleaning.
RRestartPHP-FPM, Apache or your container.
SStagingTest big upgrades there first.
TTwo-factor loginStops stolen-password takeovers.
UUploads folderBlock PHP execution there.
VVerifyRe-check the version after updating.
WWebshellA hidden file that gives attackers remote control.
XeXposureHide version headers, but patch anyway.
YYour support ticketKeep the host’s reply for your records.
ZZero-day mindsetMore bugs will come. Build a routine.

Your 12-point checklist

Tick as you go

0 of 12 done

More bugs are coming: how to be ready

OpenAI says PHP2Shell is one of several major issues its models have found and expects findings to rise sharply. Reports also note that powerful open AI models are now freely downloadable, so attackers get the same speed-up. Nobody has published a list of the next bugs, so ignore anyone who claims to know exactly what is coming. What you can do is make patch day routine:

Monthly · 15 min
Your security routine
  • Update core, plugins and themes
  • Check your PHP version and its support end date
  • Review admin users
  • Confirm backups exist and one restore works
One-time setup
Make updates automatic
  • Enable automatic security updates for your OS
  • Turn on auto-updates for trusted plugins
  • Subscribe to your host’s status and security emails
  • Follow php.net and CISA alerts

Frequently asked questions

Is my Blogger or Blogspot blog affected?

No. Blogger runs on Google’s servers, not on a PHP server you manage, so there is nothing for you to patch. This guide is for self-hosted PHP sites such as WordPress, WooCommerce, Drupal and Joomla.

Will updating PHP break my site?

Patch releases inside the same branch (for example 8.3.35 to 8.3.36) are meant for fixes only, but always back up first. Jumping to a newer branch is where old plugins can break, so test on staging.

Does Cloudflare or a firewall protect me?

Cloudflare says its WAF protection covers every plan with the firewall on, but it only helps if your visitors go through Cloudflare, and it is a stopgap. PHP says no configuration change fully mitigates these flaws, so update PHP.

My host still offers only an old PHP. What now?

Ask for a vendor-patched package or backport in writing. If they cannot give one, move to a host with supported PHP.

Is shared hosting safe?

Only if your host has patched. Ask them, and switch to the newest PHP version in your panel.

How do I know I am safe after patching?

You can never prove zero risk, but a patched version, a restart, clean file checks and 2FA cover the basics. Keep logs and backups for later.

Trusted sources and live trackers

Every claim above comes from these pages. Bookmark the official ones and re-check, because the story is still changing.

This guide is general information, not a security audit. For business-critical or breached sites, involve your host or a security professional.

Written by

MNM is a blogging expert with over 10 years of experience. Since 2020, he has been a top destination for bloggers to find tips and growth strategies for their blogs. The content created by MNM is clear and of high quality, especially for those who want to begin their blogging journey.

Share X Facebook