On October 21, 2026, the PHP project shipped emergency releases for two critical bugs, tracked together as PHP2Shell: CVE-2026-109618 and CVE-2026-109619. Both can allow unauthenticated remote code execution on PHP that serves web requests. The advance notice on October 20 rated both CVSS v4.0 9.2 and set the release for 14:00 UTC on October 21.
The fixed versions are PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35. PHP says the only complete fix is that update. A login form, a WordPress plugin, and a WAF rule all sit in the wrong place if the request is handled before application code runs.

Snapshot
| Field | Detail |
|---|---|
| Published | PHP project · Oct 21, 2026 |
| Bugs | CVE-2026-109618, CVE-2026-109619 (CVSS 9.2) |
| Who is at risk | PHP serving web requests, including PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed |
| Highest risk | mod_php — a request can trigger the attack before application code |
| Complete fix | 8.5.12, 8.4.27, 8.3.36, or 8.2.35 |
At risk: every install that serves web requests — PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP, and LiteSpeed. PHP considers the risk highest for mod_php, and says a demonstrated exploit lets an unauthenticated request trigger the attack before any application code runs. WordPress admin login, plugin MFA, and upload settings inside the app do not get a turn.
The two bugs, in PHP’s words:
- CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) is remote code execution via out-of-memory corruption. Out-of-memory handling can interrupt PHP while internal request data is only partly initialized. Cleanup may then treat that invalid data as valid.
- CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp) is remote code execution via stale global state. Request-owned internal state can survive after its backing memory has been freed. A later request on the same worker may use that stale state before normal initialization resets it.

What to install
| Release | Who |
|---|---|
| 8.5.12, 8.4.27, 8.3.36 | Supported lines — update now |
| 8.2.35 | This line ends Dec 31, 2026 |
| 8.1 and older | No further PHP-project updates |
Linux distributions and LTS vendors received the patches in advance, so the package may already be in the vendor repo. PHP 8.1 and older no longer get updates from the PHP project. Some distributions and LTS vendors backport fixes. The PHP security team also published minimal source backports for 7.4, 8.0, and 8.1 for people building from source or without an LTS vendor.
If the server uses the volunteer repo rpms.remirepo.net, PHP says that repo will not have the packages on release day. Switch to distribution packages or build from source so the update can go on today.
PHP 8.2 reaches end of life on December 31, 2026 and gets no further security fixes after that date. 8.2.35 is the patch for this pair of bugs. Plan the move off 8.2.
The advisory lists partial steps and says they do not make an installation safe. The release announcements are shorter: there are no complete mitigations. One listed step removes PHP’s own memory limit. That step is incomplete — an underlying allocation failure can still reach the bug — and it is the wrong thing to paste into a pool as a substitute for the patch. We are not repeating those settings. CERT-FR CERTFR-2026-ALE-014 (October 21) tells operators of PHP 5, 6, 7, 8.0, and 8.1 to isolate those hosts and move to a maintained, patched release. CERT-FR marks its own workaround list as unqualified, and that list covers only part of the issue.
Cloudflare’s blog (October 21) says WAF rules for these bugs went on by default at 03:02 UTC for customers with the WAF, including the Free plan, and that Cloudflare saw attack traffic. The same post says customers should still patch. BleepingComputer (Sergiu Gatlan, October 21) reports that Cloudflare CTO Dane Knecht called those protections temporary, and that the UK NCSC told organizations to update PHP or take the systems offline until they can.
| Do | Why |
|---|---|
| Install 8.5.12, 8.4.27, 8.3.36, or 8.2.35 | Only complete fix |
| Ask the distro if you are on 8.1 or older | The PHP project is not shipping those updates |
| Leave Remi’s repo if you need the package today | It will not have this release on day one |
| Treat a WAF rule as temporary cover | Cloudflare and the PHP project both say patch |
MFA on the accounts around this incident
| Grade | Meaning |
|---|---|
| Strong | FIDO2 / YubiKey-class security key for sign-in |
| Platform | Grade | YubiKey | Authenticator |
|---|---|---|---|
| Cloudflare | Strong | Yes | Yes |
| WordPress.com | Strong | Yes | Yes |
Cloudflare’s 2FA page (updated April 20, 2026) offers three factors on the same screen: Mobile App Authentication (TOTP; Google Authenticator and Microsoft Authenticator are named), Security Key Authentication (WebAuthn; YubiKey is named, and built-in authenticators such as Touch ID and Windows Hello count as passkeys), and Email Authentication. Email codes are the weaker choice. Enroll a key and an authenticator app. Dashboard 2FA does not patch PHP on an origin server, and neither does the WAF rule.
WordPress.com already grades Strong: authenticator apps, SMS, passkeys, and physical FIDO2 keys including YubiKey. SMS is the weaker factor — enroll a key. That login protects WordPress.com. It does not stop a request that runs before application code on a self-hosted PHP origin. wordpress.org in the audit table is the project site, not that hosted login.
Directory: MFA support directory · Infrastructure and Email & Identity.
Recommended MFA tools
| Product | Best for | Get it |
|---|---|---|
| YubiKey 5C NFC | USB-C laptops + NFC phones | Amazon |
| YubiKey 5 NFC | USB-A desktops + NFC phones | Amazon |
| Proton Pass | Passkeys + authenticator-style TOTP | Proton Pass |
We may earn a commission if you buy a YubiKey or sign up for Proton Pass through the links above.

Independent cybersecurity audits
We audited the PHP project, the WAF vendor, the WordPress project site, Apache, the UK NCSC, and BleepingComputer on October 21, 2026. 100% is the ideal — none reach it. These scores are public email / transport / website posture. They do not measure whether a host is running a patched PHP binary.
| Organization | Domain | Overall | vs 100% |
|---|---|---|---|
| Cloudflare | cloudflare.com | 90% | −10 |
| UK NCSC | ncsc.gov.uk | 72% | −28 |
| WordPress project | wordpress.org | 68% | −32 |
| Apache | apache.org | 68% | −32 |
| BleepingComputer | bleepingcomputer.com | 63% | −37 |
| PHP | php.net | 42% | −58 |
| Domain | Identity | Transport | Website |
|---|---|---|---|
| cloudflare.com | 90% | 80% | 100% |
| ncsc.gov.uk | 90% | 70% | 43% |
| wordpress.org | 90% | 15% | 37% |
| apache.org | 50% | 15% | 92% |
| bleepingcomputer.com | 75% | 15% | 40% |
| php.net | 25% | 15% | 39% |
Audit links: cloudflare.com · ncsc.gov.uk · wordpress.org · apache.org · bleepingcomputer.com · php.net
php.net is 42% overall and Identity 25%. A mail that says “install this PHP tarball” should be checked against php.net typed by hand. wordpress.org, apache.org, and bleepingcomputer.com sit at 15% transport.

Website stack
Passive homepage + Certificate Transparency probes (October 21, 2026). Versions only — not a claim these sites were compromised, and not a claim the homepage certificate says which PHP binary a customer origin is running.
| Domain | Stack note |
|---|---|
| php.net | CMS undetected; Let’s Encrypt TLS expires 2027-01-17 |
| cloudflare.com | CMS undetected; Let’s Encrypt TLS expires 2027-01-09 |
| wordpress.org | WordPress, version hidden; Let’s Encrypt TLS expires 2026-12-22 |
| apache.org | CMS undetected; SSL.com TLS expires 2027-03-12 |
| bleepingcomputer.com | CMS undetected; Sectigo TLS expires 2027-05-03; HTTP→HTTPS redirect not confirmed |
| ncsc.gov.uk | Drupal 11, behind current (11.4.11); Amazon Trust TLS expires 2027-03-13 |
Blacklist and lookalikes
Email blacklist checks (public DoH, October 21, 2026): php.net, cloudflare.com, wordpress.org, apache.org, ncsc.gov.uk, and bleepingcomputer.com were clear on mail/domain lists we can query. wordpress.org showed Barracuda on a web IP — shared-edge noise, not led.
Registered lookalikes that matter if a “patch PHP now” mail points at a fake download or a fake status page:
| Lookalike | Technique | Signal |
|---|---|---|
| rphp.net | insertion | BEC staging (NS + MX) |
| bleeepingcomputer.com | extra e | BEC staging (NS + MX) |
| cloudflare.net | TLD swap | NS + A + MX |
| wordpress.us | TLD swap | NS + A + MX |
php.com and php.org also have mail. php is a short label, so that scan is not evidence those domains are impersonating the PHP project. wordpress.com is Automattic’s hosted product, not a squat of wordpress.org. The ncsc.gov.uk scan mostly returned short gov labels. Those are dictionary collisions, not NCSC typos. Type php.net yourself. Continuous monitoring: Cybersquat Domain Monitoring.
CourtListener searches on October 21, 2026 for PHP2Shell, CVE-2026-109618, and CVE-2026-109619 returned no dockets.
Related coverage
Sources: PHP security advisory, Oct 21, 2026 · CERT-FR CERTFR-2026-ALE-014 · Cloudflare WAF post, Oct 21, 2026 · BleepingComputer, Oct 21, 2026 · Cloudflare 2FA · WordPress.com security keys. Independent EmailMeNow audits, website-tech, blacklist, cybersquat, and CourtListener searches October 21, 2026. Domain scores: audit.emailmenow.com only.