Direct answer
Every website or application running PHP needs the 21 October 2026 security update: PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or your vendor's patched package. The two flaws, CVE-2026-109618 and CVE-2026-109619 (“PHP2Shell”), let an attacker run code on the server without logging in, and the NCSC has asked organisations to act now. Cyber Essentials requires critical fixes within 14 days of release, so the deadline is 4 November 2026. Check the version that actually serves traffic, because some hosts and package sources were late with the fix. If you find signs of compromise on a system holding personal data, start a breach assessment straight away: the ICO's 72-hour window starts when you become aware.
Executive summary
- Both flaws are in PHP itself, so a fully updated WordPress, WooCommerce or Laravel site is still exposed on an unpatched server.
- “Updated” isn't the same as “fixed”: the PPA Laravel Forge uses was still serving the unfixed 8.3.35 hours after release.
- Since April 2026, missing Cyber Essentials' 14-day window for critical updates is an automatic fail.
- If a compromised server held customer data, you may have 72 hours to report it to the ICO.
What happened
The PHP security team gave advance notice on Tuesday 20 October and released the fixes the next afternoon, a little before the scheduled 3pm BST. By then the CVE IDs had leaked, and Cloudflare had already reported early attacks against PHP sites that morning. php.net · Sansec timeline
| PHP branch | Fixed in | Note |
|---|---|---|
| 8.5 / 8.4 | 8.5.12 / 8.4.27 | |
| 8.3 | 8.3.36 | 8.3.35 is not fixed |
| 8.2 | 8.2.35 | End of life on 31 December 2026, so plan the next upgrade now |
| 8.1 and older | No official release | Distro backports only (Ubuntu 22.04: 8.1.2-1ubuntu2.28) |
This guide is about the deadlines and obligations around the patch. For how the two bugs work, which server setups are most at risk, and update commands for Ubuntu, Forge, cPanel and Plesk, see our technical PHP2Shell guide.
What the NCSC is asking
The NCSC's alert, “Critical security issue affecting PHP”, boils down to five steps: NCSC alert
- Find every PHP installation, starting with internet-facing systems. Don't only look for old versions; all of them may be affected.
- Include suppliers and appliances that bundle PHP, and apply their updates as they arrive.
- Update, then harden using the PHP team's guidance. If you can't update yet, apply the temporary mitigations.
- Take the system offline if you can neither update nor mitigate in time.
- Check for compromise and backdoors before patching a system that's been exposed. If you're unsure, bring in an NCSC-assured Cyber Incident Response provider.
The alert also recommends the NCSC's free Early Warning service, which flags threat activity it sees on your network. It's worth signing up if you haven't.
Who patches what
If your site runs PHP and nobody has installed the fixed package and restarted PHP, it's exposed. Who should be doing that depends on your hosting:
cPanel and Plesk ship their own PHP builds, so the fix arrives when the vendor rebuilds and your host installs it. Ask for the package version and install time in writing.
Good managed hosts patch quickly, but “we're aware” isn't “we've fixed it”. WordPress maintenance mode doesn't help, because PHP handles the request before WordPress runs.
Forge installs PHP from Ondřej Surý's Ubuntu PPA, which was late with the fix. Install the newest build, check the version, mitigate if it's still 8.3.35, and check again later.
Ask for each site's server, PHP version, patch time and any interim measures. A good agency will send this without being asked.
That's what we hit on a client's Forge server on release day. The newest build the PPA offered was still short of 8.3.36, so we added the mitigation as a conf.d drop-in, restarted PHP-FPM and checked every site. It's a stop-gap until the fixed package lands:
# Interim mitigation for PHP-FPM 8.3 (repeat per installed version / SAPI)
echo 'session.upload_progress.enabled = 0' | sudo tee /etc/php/8.3/fpm/conf.d/99-php2shell.ini
sudo systemctl restart php8.3-fpm
php-fpm8.3 -i | grep session.upload_progress.enabled # expect: Off
# Evidence worth keeping: the version that serves traffic, and when it changed
php-fpm8.3 -v
grep ' upgrade php8.3' /var/log/dpkg.log | tail -5Cyber Essentials: 14 days
Since April 2026, two security-update questions in the “Danzell” question set are automatic fails: A6.4 for operating systems and firmware, and A6.5 for applications. Both require high-risk or critical updates to be installed within 14 days of release. IASME: changes to Cyber Essentials for April 2026
PHP rates both flaws critical (CVSS v4.0 9.2), so for in-scope servers the window closes on Wednesday 4 November 2026. Two things to watch:
- When the fix reached you. If your PHP comes from a distro or PPA that published later than PHP itself, note the date the fixed package became available. That's your answer if an assessor asks why you patched on day nine.
- Who's responsible. On a VPS, patching PHP is your job. On shared or managed hosting it's the provider's, but you should still have their written confirmation.
Our evidence checklist
We don't close an emergency patch for a client until five things are true and written down:
Every server, container and staging copy that runs PHP, including the forgotten ones.
The package version serving traffic: FPM or module, not just the CLI.
Workers restarted, and no process still running the old binary.
Upload progress off where it isn't needed, and request limits at the proxy.
Logs reviewed for the exploit pattern from 20 October onwards.
For the compromise check, look for multipart requests followed by memory-limit errors, bursts of HTTP 500s, unusually large PHPSESSID cookies and unexplained PHP worker restarts. This is our working checklist, not an official IASME or NCSC tool.
If you were compromised: UK GDPR and the ICO
Code execution on a web server usually means the attacker could read the database credentials in the application's config, and on a shop, booking or membership site that means customer data. If you find evidence of compromise:
- Assess the risk to people. If a personal data breach is likely to pose a risk to individuals' rights and freedoms, report it to the ICO as soon as possible and, where feasible, within 72 hours of becoming aware. ICO: report a personal data breach
- Tell the people affected without undue delay if the risk to them is high.
- Record the decision either way. You're expected to document breaches, including the ones you decide not to report.
- Rotate every secret the server held, such as database passwords, API keys and payment-provider keys, and treat the server as untrusted until it's rebuilt or cleaned.
Fines can reach £17.5 million or 4% of global turnover, but for most small businesses the bigger cost is customer trust, and a late or missing report makes both worse. If you're a processor, such as an agency or host acting for a client, tell the controller without undue delay so they can make the 72-hour decision. Our guide to UK GDPR when your development team works abroad explains who's the controller and who's the processor.
If you run an agency
Most clients don't know which PHP version their website runs, and they shouldn't have to. They do need you to tell them, plainly, well inside the 14 days. Send each client a short note: whether their site was exposed, when it was patched, what interim measures were in place, and whether you saw anything suspicious. And if you're a client whose supplier has gone quiet, our guide to taking over a website from another agency covers getting control back safely.
Frequently asked questions
- What is the Cyber Essentials deadline for PHP2Shell?
- Under the rules introduced in April 2026, high-risk and critical security updates must be installed within 14 days of release, and failing that question fails the assessment. PHP published the fixes on 21 October 2026, so for in-scope servers the practical deadline is 4 November 2026. If your package source shipped the fix later, record when it became available to you and raise it with your certification body.
- Do I have to report a PHP2Shell compromise to the ICO?
- Only if it's a personal data breach that's likely to pose a risk to people's rights and freedoms. In that case UK GDPR requires you to tell the ICO without undue delay and, where feasible, within 72 hours of becoming aware. A server running a shop, membership site or CRM usually holds personal data, so treat a compromise as a possible breach until the logs show otherwise. Record your assessment even if you decide not to report.
- My site is on shared hosting. Who has to patch PHP?
- Your host patches PHP on shared and managed plans, but your site and its data are still your responsibility. Ask the host, in writing, for the exact package version and when it was installed, and keep the reply. You can't apply the interim mitigations yourself with .user.ini or ini_set(), because they have to take effect before the request is parsed.
- Does the NCSC want PHP2Shell incidents reported?
- The NCSC alert asks organisations to find every PHP installation, update or mitigate, and check exposed systems for signs of compromise. If you're unsure whether you've been breached, it recommends an NCSC-assured Cyber Incident Response provider. It also points to its free Early Warning service.
- Will PHP2Shell cost us our Cyber Essentials certification?
- Certification is assessed at a point in time, but since April 2026 the 14-day update questions are automatic fails, and Cyber Essentials Plus tests a sample of devices. An internet-facing PHP server left unpatched past the window is exactly what those checks catch. Patch it, keep the evidence described above, and you'll have an answer when you're asked.
Primary sources
- php.net: security advisory and the 8.5.12, 8.4.27, 8.3.36 and 8.2.35 releases
- GHSA-w8hw-w9fx-j79w: RCE via OOM corruption (CVE-2026-109618)
- GHSA-6wmf-4rv5-p3rp: RCE via stale global state (CVE-2026-109619)
- NCSC: critical security issue affecting PHP
- IASME: Cyber Essentials changes for April 2026
- ICO: personal data breach reporting
- Ubuntu USN-8948-1: fixed package versions
Technical and operational guidance, not legal advice. Confirm breach-reporting decisions with your data protection lead or a qualified adviser, and certification questions with your Cyber Essentials certification body.
Topic cluster
Engineering & compliance
Guidance on hosting, data protection, handovers and keeping systems running.
Technical guide
PHP2Shell: how to update PHP
Affected versions, the two bugs and update commands for Ubuntu, Forge, cPanel and Plesk.
Related guide
How should you host your application?
Who patches the runtime is a hosting decision. Make it deliberately.










































