PHP2Shell: unauthenticated remote code execution in PHP web stacks
Actively exploited PHP flaw: unauthenticated remote code execution, validated on Apache mod_php. Fixed in 8.5.12, 8.4.27, 8.3.36, 8.2.35.
Who is affected
- Websites and portals on PHP 8.2 through 8.5, below versions 8.5.12, 8.4.27, 8.3.36 and 8.2.35
- Apache mod_php deployments first: full exploitation was validated ahead of any application code
- Hotel websites, booking engines and back offices built on PHP, managed or in-house
- Instances on PHP 8.1 and older, end of life and unpatched
- dormakaba access control lines (exos 9300, MATRIX, evolo Manager, evolo smart, exivo, resivo, B-COMM, skyra, EntriWorX, Keyscan, Ambiance, Community): vendor advisory DKSA-26-23-101 of October 21, 2026, CVSS 9.2
How to fix
Upgrade to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35 without waiting. Apply the vendor workaround in parallel: session.upload_progress.enabled=0 in php.ini or the FPM pool configuration. Cut public network exposure on any unpatched instance until it is updated. Hunt for compromise traces: files added to web roots, unexpected child processes of the web worker, anomalous outbound traffic. CISA added the flaw to the KEV catalog on October 26 with an October 29 remediation deadline and a forensics triage requirement.
What happened
CVE-2026-109618, nicknamed PHP2Shell by the research team that documented it, is a flaw in the PHP engine itself: on a remotely triggered out-of-memory condition, PHP abandons request handling while memory is left in an invalid state that the shutdown procedure then reads. Chained with a correlated second bug (CVE-2026-109619), it yields unauthenticated remote code execution, validated by the vendor against Apache mod_php with default configuration, before any application code runs. Emergency fixes shipped on October 21; CISA added both flaws to the KEV catalog on October 26 citing real-world exploitation.
Why it matters for a hotel
- PHP powers a large share of hospitality web: marketing sites, custom booking portals, payment modules, operator back offices. A compromised server exposes reservation data in transit and becomes a foothold toward the internal network.
- Exploitation needs no account and no interaction: on vulnerable configurations a plain HTTP request is enough, which makes in-the-wild scanning automatic and fast.
- Managed instances are not automatically covered: many hosting providers had not yet deployed the October 21 builds at disclosure time.
Who is affected
- Any web application on unpatched PHP 8.2 through 8.5; Apache mod_php is the confirmed scenario, while FPM, FrankenPHP and LSAPI are judged likely susceptible based on the vendor's source analysis.
- PHP 8.1 and older, which no longer receive fixes, must migrate to a supported branch.
- Note: a third variant, CVE-2026-115560, remains open after the October 21 fixes in rare configurations; the workaround below closes it too.
How to fix
- Update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35 on every web server, including test environments and provider-managed instances.
- Set session.upload_progress.enabled=0 in php.ini or the FPM pool configuration (never via ini_set()) until the next regular bugfix release.
- Remove internet exposure from any instance that cannot be patched immediately.
- Hunt for compromise traces predating the fix: recently added files in web roots, new administrator accounts, unusual outbound connections from the web worker.
- Require every hosting provider and integrator to report the exact PHP builds deployed, property by property.
Context
PHP2Shell echoes the node2shell campaigns: when a bug lands in the web's execution substrate, the most exposed sector is not the one making headlines, it is the one whose critical sites run on quietly unaudited building blocks. French and US response teams publish the same guidance: patch exposure first, then verify what came in.
Sources
- 1.NVD, CVE-2026-109618
- 2.PHP Group, advisory GHSA-w8hw-w9fx-j79w (RCE via OOM corruption)
- 3.CISA, KEV announcement of October 26
- 4.CERT-FR, alert CERTFR-2026-ALE-014
- 5.BleepingComputer, PHP2Shell exploited in the wild
- 6.dormakaba, advisory DKSA-26-23-101 (October 21, 2026)
- 7.Barracuda, per-product PHP impact advisory