PHP ARMAGEDDON
Two critical flaws opened in the language that runs the web. An attacker needs no password and no login to run code on your server. This is not panic: in the PHP Foundation's own words, you "must update now".
Researchers say that on unpatched PHP the big platforms are affected too: WordPress, Drupal, Joomla, Magento, Laravel, Symfony, phpMyAdmin, Nextcloud, Roundcube, MediaWiki, WHMCS. Not a flaw in those – a flaw in the PHP beneath them.
Free, passive check: we only read what your server serves to anyone without authentication (response headers, the home page). No intrusion, no path guessing, no exploitation attempt of any kind.
What happened on 20–21 October 2026?
This is not another "update WordPress" story. The PHP runtime itself is affected, so every PHP application is in scope, from the simplest page to a webshop. The PHP Foundation calls updating "imperative".
Calif (Ryan Austin) and OpenAI – independently, on the same day – report the first flaw to the PHP security team. Wiz reports further cases on 24 August, OpenAI on 18 September.
→ PHP Foundation – background on the releaseThe CVE identifiers leak early to Hacker News and social media – with a wrong 10.0 CVSS score and a wrong release time. No technical detail yet.
→ PHP Foundation – background on the releaseOn the php.announce list Jakub Zelenka posts the pre-announcement: "Upcoming Critical PHP Security Release" – two critical (CVSS v4.0 9.2) flaws, release on 21 October at 14:00 UTC. The original date was 22 October; the leak pulled it forward.
→ php.net – pre-announcement (php.announce #509)Patchstack hosting partners report the first suspicious traffic; Cloudflare's CTO reports early probing and ships WAF rules to every customer, free tier included – stressing it is only a stopgap, not a substitute for updating.
→ Patchstack – live status and WordPress guidancePHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 ship. The php.net advisory: "All PHP users are strongly encouraged to update immediately." The already end-of-life 7.4, 8.0 and 8.1 branches get only a minimal source backport.
→ php.net – official security advisory (2026-10-21)CERT-EU issues advisory 2026-018 (update now, or isolate internet-facing systems). Hungary's National Cyber Defence Institute issues a Hungarian alert: "update without delay". As a precaution, Dutch government services (DigiD, MijnOverheid) also go offline temporarily.
→ Hungarian National Cyber Defence Institute – alertwatchTowr and Huntress do not yet confirm mass successful exploitation; Rapid7 expects a working public exploit "soon". Researchers say working code execution was built during the research against both mod_php and PHP-FPM.
→ Rapid7 – analysis and mitigation
What are these two flaws? – in plain terms
We give no exploitation recipe, and none is needed. It is enough to understand which two edge cases PHP got wrong, to see why a firewall or a password alone will not save you. The attacker reaches PHP through your application, but the flaw is in PHP.
CVE-2026-109618 – memory handling flaw (OOM)
When PHP runs out of memory while handling a request, a half-built internal structure can be left behind. During request shutdown PHP treats it as valid, and from that corrupted memory state an attacker can reach code execution on the server. PHP considers Apache mod_php the highest risk, because there this can happen even before the application's code runs.
→ GitHub Advisory – CVE-2026-109618 (GHSA-w8hw-w9fx-j79w)CVE-2026-109619 – stale state (use-after-free)
PHP holds internal state (error, session, object data) that belongs to one request but is kept by the worker process. If it is not cleared in time, the next request on the same worker can reference already-freed memory. This can lead to memory disclosure (reading passwords, tokens, keys) and to code execution.
→ GitHub Advisory – CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)The flaws were reported by Calif, OpenAI and Wiz; the research is collectively named "php2shell". Wiz also showed that the PHP process memory can be read without code execution – so rotating the passwords and keys stored on the server is advised if an unpatched version was running.
Status by version – what got fixed on 21 October 2026?
This table is built from PHP's official data (php.net/supported-versions, php.net/eol and the 2026-10-21 advisory). Dates are UTC. We do not guess: a branch that is end of life received no official release.
| Branch | Fixed release (2026-10-21) | Previous release | Security support ends | Status |
|---|---|---|---|---|
| 8.5 | 8.5.12 | 8.5.11 (2026-09-24) | 2029-12-31 | Active branch. Update to 8.5.12. |
| 8.4 | 8.4.27 | 8.4.26 (2026-09-24) | 2028-12-31 | Active branch. Update to 8.4.27. |
| 8.3 | 8.3.36 | 8.3.35 (2026-09-24) | 2027-12-31 | Security fixes only now. Update to 8.3.36. |
| 8.2 | 8.2.35 | 8.2.34 (2026-09-24) | 2026-12-31 | Got the fix (8.2.35), BUT the branch ends on 31 Dec 2026. Plan a move to 8.3+. |
| 8.1 | — (no official release) | 8.1.34 (2025-12-18) | 2025-12-31 (ended) | End of life. Only a minimal source backport (self-compiled). Needs an upgrade. |
| 8.0 | — (no official release) | 8.0.30 (2023-08-03) | 2023-11-26 (ended) | End of life. Only a source backport exists. Urgent upgrade. |
| 7.4 | — (no official release) | 7.4.33 (2022-11-03) | 2022-11-28 (ended) | End of life. Only a source backport exists. Urgent upgrade, with a compatibility review. |
| 7.3 and older | — (no fix) | — | long ended | No fix and no backport. Must be replaced. |
PHP 8.6 is planned for 19 November 2026 (php.net wiki); this radar judges only today's officially released branches and does not guess about future versions.
The PHP security team published a minimal source backport for the 7.4, 8.0 and 8.1 branches (php.net advisory). This is not an official release: it must be built from source. The reliable path is to move to a supported branch rather than patch in place.
WARNING – the upgrade alone can break your site
This is the most important sentence on this page, so we box it:
Old code (many PHP 5.x / 7.x era themes and plugins) relies on language features that PHP 8 removed or tightened. What was a "warning" on 7.4 is a fatal error on 8.x.
An abandoned plugin that has not been updated for years is the most common point of failure. Everything must be surveyed before the upgrade.
So the correct order is: 1) backup, 2) make a staging copy, 3) compatibility review of the code, 4) fix the issues on the copy, 5) only then the live upgrade. Updating live and blind is reckless.
Do not leave it to chance. One wrong click on the update button and the site can be down for days. Leave it to a professional.
What should you do NOW? – practical order
- 1
Find out which PHP version runs
Use the radar above, or check the hosting panel. The exact patch level (e.g. 8.3.36) is what matters, not just the branch.
- 2
Make a full backup
Files and database together, BEFORE the upgrade. If something breaks, this is the way back.
- 3
Update to the fixed release
To your branch's fixed release (8.5.12 / 8.4.27 / 8.3.36 / 8.2.35). On an end-of-life branch: move to a supported branch.
- 4
Test on a copy (staging) first
Check that the theme, plugins and custom code tolerate the new PHP. Go live only after a working copy.
- 5
Rotate the secrets
If an unpatched version was running, memory could be read. Passwords, API keys, sessions – rotate all of them.
- 6
If you cannot solve it in time
Temporary stopgaps exist (php.net lists them), but none is complete protection. The sure fix is the update – with an expert if needed.
- Against CVE-2026-109618: set memory_limit=-1 so the application cannot override it (e.g. php_admin_value in the FPM pool or Apache config); keep post_max_size low (8M without uploads, 32M with uploads).
- Against CVE-2026-109619: set session.upload_progress.enabled=0 in php.ini / the FPM pool (NOT ini_set() or .user.ini), then restart every worker; on PHP 8.5 also fatal_error_backtraces=0.
- Hiding errors (error_reporting, display_errors, @) does NOT help. A container/cgroup memory limit can act as an availability boundary but is not complete; RLIMIT_AS / RLIMIT_DATA should specifically be avoided.
The test is run by Gábor Vidovics
Security incident expert · website security (WordPress / PHP) · senior full-stack developerI have worked in IT for nearly thirty years, over twenty of them as a developer and technical lead. Today I investigate and restore hacked, slowed or oddly behaving websites, and make sure nothing goes wrong again on the sites I have put right.
I measure, I do not guess; I quarantine, I do not delete – your data survives the investigation and every step is reversible. I do not promise 100% protection: I can tell you how far an intruder gets, and I can increase that distance.
I have worked on everything from native PHP to the large frameworks, so I am at home with PHP version upgrades and with the "nobody dares touch this any more" sites. The pre-upgrade compatibility review and the safe go-live are part of one process for me.
- 21 documented, anonymised incident cases
- 164,457 log lines reviewed in a single case
- 0 files deleted – everything quarantined, evidence preserved
- Own tools: DomainCheck, domain analyser, incident analyser
-
Contact
- Phone
- +36 30 9688 854
- Location
- Szentes, Hungary · remote / hybrid
- linkedin.com/in/vidovicsgabor
I take requests through the form below. In an acute situation (Google flagged you, your host warned you, or you see something odd on the site) write URGENT in the message.
Request expert help with the upgrade
The radar is free. If your website runs a vulnerable version, or it cannot be told from outside, and you do not want to leave the upgrade to chance, write to me – I reply on working days, and out of turn in acute cases.
Quick facts
The key, self-contained facts about the 21 October 2026 PHP security release.
- The two critical PHP flaws are CVE-2026-109618 and CVE-2026-109619, both CVSS v4.0 9.2 (critical).
- The fix shipped on 21 October 2026: PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35.
- The flaws are unauthenticated and remotely exploitable, and affect every web-facing PHP install (mod_php, PHP-FPM, php-cgi, FrankenPHP, LiteSpeed).
- PHP 8.1 and older have no official fix, only a minimal source backport – you must move to a supported branch.
- Raising the PHP version alone is not safe: if the code is not PHP 8.x compatible the site can collapse, so a backup, a copy and a compatibility review come first.
- The free PHP Radar (dinorr.hu/php-radar) shows which PHP version is visible on a domain and whether, by version number, it is affected.
- The test is run by Gábor Vidovics, security incident expert; the radar is free and the first reply is free.
Frequently asked questions
What exactly does this radar do?
It looks at what PHP-version signal your server gives out from the outside (HTTP response headers, the home page content) and classifies it against PHP's official data: patched, vulnerable, end-of-life branch or hidden. It is a passive check: it never attempts exploitation, never guesses paths, it only reads the publicly served response.
Is the result reliable?
We measure what the server prints. Many servers hide the version for security (which is correct), or the distribution patches without raising the version number – then nothing certain can be said from outside, and the radar says so honestly. The exact state is revealed inside the server, with a single command.
Is it free? What is the catch?
The radar is genuinely free, and there is no catch. The expert upgrade (survey, staging, compatibility fixes, safe go-live) is the paid service – but only if you ask for it.
Is updating PHP enough?
Against the security flaw, yes, that is the complete fix. BUT if your code is not PHP 8.x compatible, the update can break the site. That is why you first need a backup, a copy and a compatibility review.
My host says they "handle it". Can I relax?
Many hosts really do update or backport – but it is worth verifying, not assuming. A "hidden" or "distribution" result from the radar signals exactly this: it is not visible from outside, it has to be checked from inside.
What are CVE-2026-109618 and 109619?
The official identifiers of the two flaws. Both are critical (CVSS v4.0 9.2), unauthenticated and remotely exploitable, and fixed by PHP's 21 October 2026 security release. Details are in the GitHub advisories and the php.net advisory – see the Sources section.
Sources
Every statement rests on these public, citable sources. This page is informational; the authority is always php.net's official announcement.
- php.net – official security advisory (2026-10-21)https://www.php.net/archive/2026.php#2026-10-21-5
- GitHub Advisory – CVE-2026-109618 (GHSA-w8hw-w9fx-j79w)https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- GitHub Advisory – CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
- PHP Foundation – background on the releasehttps://thephp.foundation/blog/2026/10/21/todays-php-security-release-and-how-were-strengthening-php-security/
- php.net – pre-announcement (php.announce #509)https://news-web.php.net/php.announce/509
- php.net – supported versionshttps://www.php.net/supported-versions.php
- php.net – end-of-life versionshttps://www.php.net/eol.php
- Hungarian National Cyber Defence Institute – alerthttps://nki.gov.hu/figyelmeztetesek/riasztas/riasztas-a-php-futtatokornyezet-kritikus-serulekenysegeirol/
- CERT-EU – advisory 2026-018https://cert.europa.eu/publications/security-advisories/2026-018/
- Patchstack – live status and WordPress guidancehttps://patchstack.com/articles/php-major-vulnerability-alert-10-2026/
- Rapid7 – analysis and mitigationhttps://www.rapid7.com/blog/post/etr-cve-2026-109618-and-cve-2026-109619-critical-unauthenticated-remote-code-execution-in-php/
- Tenable – FAQ on the two flawshttps://www.tenable.com/blog/php2shell-cve-2026-109618-cve-2026-109619-frequently-asked-questions-about-critical-php-remote
- Calif – php2shell technical write-uphttps://calif.io/php2shell/