On this page
- Which client sites are in scope?
- Why is "we updated WordPress" the wrong answer to a client?
- How do I fix it across client sites?
- Am I affected? Where each client site stands
- Was anything exploited, and what should I look for?
- What about the UpdraftCentral incident?
- What do I tell clients?
- What can a scan tell me about a client portfolio?
For an agency, the October 2026 incident that reaches every PHP client site is PHP2Shell (CVE-2026-109618 and CVE-2026-109619), two remote code execution flaws in PHP itself. The fix is a patched PHP build (8.5.12, 8.4.27, 8.3.36, 8.2.35 or a vendor backport) plus a worker restart, for each site. Get that confirmed in writing before you tell a client "patched". The agency triage and evidence list shows what to keep per site.
| Fact | Detail | Source |
|---|---|---|
| CVE ids | CVE-2026-109618 (RCE via OOM corruption), CVE-2026-109619 (RCE via stale global state) | PHP notice |
| Severity | CVSS v4 9.2 for both, per PHP's 20 October pre-announcement | PHP archive |
| Disclosed | 21 October 2026, 14:00 UTC | PHP archive |
| Fixed releases | 8.5.12, 8.4.27, 8.3.36, 8.2.35 | PHP notice |
| Older branches | PHP 8.1 and older get no updates from the PHP project. Some distributions and LTS vendors provide backports | PHP notice |
| In scope | All PHP installations serving web requests, including PHP-FPM, mod_php, php-cgi, FrankenPHP and LiteSpeed | PHP notice |
| Exploitation | Both CVEs added to CISA's Known Exploited Vulnerabilities catalog on 26 October 2026. AWS reports honeypot attempts before disclosure (vendor-claimed) | CISA KEV, AWS |
| Separate WordPress incident | UpdraftCentral key theft, no CVE; fixed in UpdraftPlus 1.26.13 / 2.26.13 | TeamUpdraft, Patchstack |
| Checked | 28 October 2026 | this page |
Which client sites are in scope?
Every client site that runs on PHP. That covers WordPress, WooCommerce, Magento, Shopware, Drupal, Joomla and Laravel builds. The PHP project's notice says all PHP installations serving web requests are at risk, and calls mod_php the highest-risk setup. Static sites, Node.js apps and hosted stores that run no PHP of yours are outside this bug. Node.js shipped its own security releases (22.23.4, 24.22.1 and 26.12.1) on or shortly after 21 October 2026, per the Node.js project's notice as shown at our check on 28 October 2026.
The UK NCSC's alert starts with inventory: find your PHP systems, internet-facing ones first. It also tells you to watch vendors whose products bundle PHP. For an agency that means the client's host, any staging server, and any container image you built and still deploy.
For the wider picture, the month's full incident list lists every incident with its fix. The PHP bug's version detail is on its own page.
Why is "we updated WordPress" the wrong answer to a client?
The flaws are in the PHP engine, so application updates do not close them. The fix lives on the server. On shared and managed plans that server is the host's, not yours. On a VPS you manage, it is yours.
A backport makes a status hard to state per site:
- Backports keep the old version number. A fixed package can still report an older version. The PHP project itself says vendors provide backported fixes for 8.1 and older. A version string alone does not prove a fix, and it does not disprove one.
That is why a client-ready line needs the build or package identifier and a restart time, not just a version. Responsibility is covered in who is responsible for patching a website.
How do I fix it across client sites?
If the client's host manages PHP
Send each host this question, once per domain, and keep the reply with the client file:
For [client domain], is the PHP runtime that serves web requests patched for CVE-2026-109618 and CVE-2026-109619? Please give the fixed package, build or backport identifier, confirm that all PHP workers serving it have been restarted or replaced, and say whether I need to redeploy or change a setting.
- List every client site by host, plan type and PHP handler
- Send the question above to each host, with the date you sent it
- Record the reply: package or build, restart time, who answered
- Chase any site with no reply, and mark it "unknown", not "patched"
- Test key pages and checkout after the host changes anything
Host-specific dated statuses are on the shared hosting page.
If you manage the server
- Update PHP from your distribution or vendor and check the package changelog names both CVEs
- Restart PHP-FPM or Apache so the running workers use the fixed build
- Rebuild and redeploy any container image that bundles PHP
- Repeat per virtual host if more than one PHP version runs
- If you cannot patch yet, the PHP project lists partial mitigations and says only an update is a complete solution. The UK NCSC says to consider taking the system offline if mitigation takes too long
Am I affected? Where each client site stands
Am I affected? Where you stand right now
A check from outside can sort a client site into the first two states. Only the server or the host can give you the third.
- Detected The site serves PHP and its exposed version is below the fixed release for its branch. Treat it as exposed. Ask the host the question above, or patch and restart today.
- Unknown The version is hidden, or could be a backport, or you cannot tell which runtime serves this host. This is the common case. Get the package or build identifier and the restart time from whoever runs the server.
- Confirmed by owner evidence You hold the fixed package or build identifier naming the CVEs, and a restart or redeploy time after it. The runtime is fixed. Whether anything got in earlier is a separate question.
No scan, ours included, moves you from "unknown" to "confirmed".
Was anything exploited, and what should I look for?
CISA added both CVEs to its Known Exploited Vulnerabilities catalog on 26 October 2026, with a federal due date of 29 October and a forensic triage flag on each entry. AWS says its honeypots recorded attempts before the public disclosure, and also says it is unclear whether they would have worked on real systems. That is vendor telemetry. The UK NCSC alert does not say the flaws are being exploited. We found no first-party report of a confirmed compromise of a named site at our check on 28 October 2026.
The KEV listing means exploitation is confirmed to CISA's standard, so treat any unpatched PHP site as a priority. "Attempts" is not "compromised". Say attempts for attempts, and use "compromised" only with evidence from that site. The NCSC advises checking for signs of compromise and backdoors where you cannot update or disable a system immediately.
What about the UpdraftCentral incident?
It is a separate event with a different cause (the site-owner version of these steps is on its own page), and it touches WordPress client sites that use UpdraftCentral. TeamUpdraft says it identified unauthorised access to its website over the weekend of 17 to 18 October, and that the customer database, including UpdraftCentral connection keys, was believed accessed. Its 21 October update also asks UpdraftPlus Premium users to check their sites for compromise even if they have never used UpdraftCentral, and its 22 October update flags unexpected Editor roles (at our check on 28 October 2026). Patchstack says there is no CVE, because it is a key compromise and not a code flaw.
TeamUpdraft's published order, per site, from its notice last updated 23 October (at our check on 28 October 2026):
- Log in to the site's own WordPress dashboard, not through UpdraftCentral.
- Update UpdraftPlus to 1.26.13 (free) or 2.26.13 (Premium), or later.
- Disconnect the site and delete the UpdraftCentral connection key.
- Check Users for administrator accounts you do not recognise, and remove them.
- Check Plugins, including must-use plugins, for ones you do not recognise, and remove them.
- Change the passwords of all administrator accounts.
- If anything looks suspicious, consider a backup from before 17 October.
- Reconnect the site to UpdraftCentral.
Patchstack warns that the backdoor creates an account that shows as an Editor and is granted manage_options and install_plugins, so reviewing your administrator list misses it, and the account stays in WordPress after the plugin is removed. TeamUpdraft's step 4 names administrator accounts; its 22 October update also flags unexpected Editor roles. On each site, check Editor accounts you do not recognise as well, and remove them.
Patching PHP does not touch this one, and updating UpdraftPlus does not patch PHP. Check each client site for both. It is also worth knowing how to find plugins that store remote-control keys before the next vendor incident.
What do I tell clients?
Keep it dated and per site. Ready-made wording is in the client email templates. A workable shape:
- What happened: PHP published two critical fixes on 21 October.
- What we did: asked the host on [date], received [package or build] on [date], or still waiting.
- What we cannot see: whether anything got in before the fix. We are looking at logs and files from 17 October.
- What we need from you: a decision on a maintenance window, and written consent for any testing.
Do not give a client a blanket all-clear, and do not name another business as a victim. A passive check and the public record support neither.
What can a scan tell me about a client portfolio?
Red by run.cloud has a free scan and a full scan. The free scan identifies the technologies a site serves, then looks each version up in public vulnerability records. It is a lookup: it can say a version is affected, not whether your setup is exposed, and it cannot see a vendor backport or a worker restart. It is one scan per domain, so a portfolio means running it domain by domain.
Permission to test client sites and the other agency guides go further. Before any scan, you add a DNS TXT record so nobody can point Red at a site that is not theirs. For a client domain, get the client's written agreement first. Domain control does not by itself authorise testing the host or any other service on the same infrastructure.
Questions people ask
What do I tell clients who ask if we patched PHP immediately?
Tell them what you have evidence for, per site, with the date. If the host has given you the fixed package or build and a worker restart time, say that. If you are still waiting on a host, say you have asked and give the date you asked. A short dated note beats a blanket 'patched'.
Does updating WordPress and plugins on client sites fix PHP2Shell?
No. The flaws are in PHP itself, so the fix is a patched PHP runtime on the server, followed by a restart of the PHP workers. Keep updating WordPress and plugins for other reasons, but it does not close this hole.
Can I scan a client's site without asking them?
Get the client's agreement first, in writing, for each site. Owning a login to a site is not the same as being allowed to test it, and the host may have its own rules. Red asks for a DNS TXT record on the domain before a scan runs, which the client may need to add or approve.
One client site looks compromised. Should I just restore a backup?
Not before the PHP runtime is patched, or the same hole is open again. Preserve the logs first, then restore from a backup taken before the exposure window and rotate the passwords and keys the site could read. For the UpdraftCentral incident, TeamUpdraft suggests a backup from before 17 October.
Do I need to check hosts that say they are not affected?
Ask for the reason in writing. The PHP project says every PHP installation serving web requests is in scope, so 'not affected' is only credible if the site does not run PHP at all. If a vendor names the fixed package for that runtime, that is owner evidence that the site is fixed, not a reason to call it unaffected.
Sources
- PHP security notice, 21 October 2026 (php.net)Both CVEs, the fixed releases, the scope, the older-branch rule. The 20 October pre-announcement carries the CVSS v4 9.2 score and the 14:00 UTC disclosure time.
- PHP 2026 news archive, including the 23 October informational advisoryThe 23 October item recommends session.upload_progress.enabled=0 and names a separate CVE-2026-115560, full advisory to follow.
- GHSA-w8hw-w9fx-j79w: CVE-2026-109618 (php/php-src advisory)
- GHSA-6wmf-4rv5-p3rp: CVE-2026-109619 (php/php-src advisory)
- UK NCSC: critical security issue affecting PHP (21 October 2026)Inventory first, internet-facing systems first, watch vendors that bundle PHP. Does not say the flaws are being exploited.
- TeamUpdraft security incident notice (last updated 23 October 2026)Vendor account of the UpdraftCentral key incident, fixed versions and the order of steps.
- Patchstack: UpdraftCentral key compromise (19 October 2026)Independent analysis. No CVE assigned, because it is a key compromise and not a code flaw.
- Amazon Threat Intelligence: PHP2Shell attempts seen in MadPot honeypots before disclosure (AWS Security Blog)Vendor telemetry. AWS says it is unclear whether the early attempts would have worked on real systems.
- CISA Known Exploited Vulnerabilities catalogBoth PHP CVEs added 26 October 2026, federal due date 29 October, forensic triage flagged, known ransomware use unknown. Checked 28 October 2026 against CISA's published catalog data.
Facts on this page are dated and point at the primary source next to them. If a vendor status changes after the date shown, the vendor's page wins; tell us at support@run.cloud and we will update it.