The PHP security team released fixes on 21 October 2026 for CVE-2026-109618 and CVE-2026-109619, two critical flaws that can allow unauthenticated remote code execution. The upstream fixed builds are PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. PHP's advance notice rated each issue CVSS v4.0 9.2. The release advisory identifies web-facing PHP installations as at risk and says a demonstrated mod_php exploit can trigger before application code runs.
Quick answer. Upgrade supported PHP branches to 8.2.35, 8.3.36, 8.4.27 or 8.5.12, respectively, or obtain a provider advisory proving a backported fix. Identify the interpreter serving each application, patch every deployment path and validate the running service. PHP says temporary configuration measures reduce specific attack paths but are not a complete solution. Stingrai can follow the rollout with a scoped web application and API penetration test that checks exposure and application-level controls without using public exploit payloads.
Update, 21 October 2026: PHP published its security advisory and fixed-build list. This article uses the official advisory for patch floors. Verify distribution and managed-platform packages against their own advisories before closing a change ticket.
The value of an incident brief is not a dramatic exploit narrative. For a mid-market or enterprise PHP estate, the hard work is finding the copy that actually serves requests, making the right team own it, proving every deployment consumed the fix, and deciding what evidence warrants an incident investigation. PHP describes one flaw in out-of-memory request cleanup and another in stale worker state across requests. Exposure still depends on the runtime and configuration, so the patch inventory must be more precise than a list of framework repositories.

Figure 1: Four PHP deployment paths can require different patch owners and verification evidence. The matrix is an operational checklist, not a claim that every instance of a deployment type is exploitable. Source: PHP, security advisory and PHP Linux installation guidance.
What is confirmed and what remains open
The PHP release advisory names two flaws and four supported-branch fixes. CVE-2026-109618 concerns out-of-memory handling that can leave internal request data partly initialized before cleanup. CVE-2026-109619 concerns request-owned state that can remain after its backing memory is freed and be used by a later request in the same worker. PHP says both can allow unauthenticated remote code execution. It considers mod_php the highest-risk configuration because it has a demonstrated exploit before application code runs; the advisory also names PHP-FPM, php-cgi, FrankenPHP and LiteSpeed among web-serving installations to assess.
CERT-EU's initial advisory advised identifying PHP-based applications and considering isolation of internet-facing services if patching was delayed. Its pre-release version speculation is superseded by PHP's published release. Use PHP's own patch floors and provider package notices for decisions, and treat an unpatched installation as an open remediation item even when an exposure-reduction control is in place.
Operational question | Source-backed answer after release | Decision owner |
|---|---|---|
Which builds fix the two CVEs? | PHP released 8.2.35, 8.3.36, 8.4.27 and 8.5.12. | Platform owner maps each installed branch to its fix. |
Are older branches covered upstream? | PHP 8.1 and older have no new project release; PHP supplied minimal source-backports for 7.4, 8.0 and 8.1. | Legacy owner obtains a provider fix or plans an upgrade. |
Is the mod_php risk different? | PHP reports its highest risk for mod_php and a demonstrated exploit before application code runs. | Incident lead prioritizes web-facing mod_php inventory. |
Is there confirmed exploitation in the wild? | The PHP advisory describes a demonstrated exploit but does not report an observed campaign. | Detection lead checks later primary disclosures without equating a lab demonstration to a campaign. |
Is a temporary control enough? | PHP says only updating is a complete solution; its configuration measures reduce specific paths. | Application and network owners assess temporary exposure and availability tradeoffs. |
This distinction prevents two common errors. One is underreacting because a team's favorite vulnerability scanner has no check yet. The other is treating a third-party package version string as proof of an upstream fix without checking the provider's backport notice. The safest operational posture is rapid reconciliation against PHP's advisory and the package or platform provider that supplies the runtime in production.
Inventory the runtime that serves traffic
Start with internet-facing PHP applications, but do not stop at a source repository or framework dependency file. A package manifest can tell you what the application depends on; it may not tell you which PHP interpreter a particular web worker has loaded. The PHP manual's `phpversion()` reference describes the value as the version of the currently running PHP parser. That is the level of observation an owner needs after a deployment.
Build an owner map for each deployment shape:
Deployment shape | What to reconcile | Evidence that matters |
|---|---|---|
Managed web host or VM | PHP build, web server integration, package source, host pool and restart procedure. | Runtime version from the serving process, package provenance and request-routing sample. |
Containerized service | Base image and digest, build pipeline, deployed replica set, worker restart and roll-forward status. | New image digest on all running replicas and an application-level runtime check. |
Managed application platform | Provider's PHP runtime track, maintenance notice, application redeploy path and any pinned runtime selection. | Provider confirmation plus verification of the deployed application's runtime. |
CLI, queue or scheduled worker | Interpreter path, package source, job runner and long-lived process lifecycle. | Version on the executing worker and evidence that old processes stopped. |
An enterprise usually has several of these at once. A public site may be served from a container while an image-processing worker runs on a VM and an administrative tool sits with a managed host. A patch ticket tied only to the public hostname can leave a second runtime behind. Conversely, a vulnerable build installed on an isolated machine does not establish an internet-facing exploit path. Record both version and exposure.
For each asset, capture owner, environment, PHP branch and build, installation channel, exposure, whether it processes untrusted requests, maintenance window, rollback plan and verification method. Include blue-green fleets, canaries, disaster-recovery images, paused workers and old deployment templates. A clean production dashboard can conceal an older image that will return on the next scale-out or rollback.
Use the release matrix, not the nickname, for patch decisions
The name PHP2Shell is useful for finding this discussion, but deployment decisions should be attached to the official CVE and version records. PHP's 21 October advisory gives the following upstream fixes for both vulnerabilities. Use the fixed build for the branch you run, then verify the deployed interpreter and package provenance.
Supported PHP branch | Upstream fixed build | Immediate decision |
|---|---|---|
8.2 | 8.2.35 | Update the 8.2 runtime, then plan for this branch's 31 December 2026 end of life. |
8.3 | 8.3.36 | Update every serving worker and the images or packages that recreate it. |
8.4 | 8.4.27 | Update every serving worker and the images or packages that recreate it. |
8.5 | 8.5.12 | Update every serving worker and the images or packages that recreate it. |
PHP says 8.1 and older receive no new PHP project releases. The security team supplied minimal source-backports for 7.4, 8.0 and 8.1 for people who build from source or lack an LTS vendor; these are not packaged upstream releases. Seek a documented distribution or LTS vendor fix, apply a vetted source backport where appropriate, or move to a supported branch. Do not mark an unsupported runtime safe because it lacks a new upstream version number.
The incident lead should copy these exact patch floors into the change record and reconcile package provenance. PHP's Linux installation guidance notes that third-party binaries can contain source patches added by the build provider outside PHP's direct control. A distribution can therefore report a version string that differs from an upstream tarball while carrying a backported fix. Require the distribution's own security advisory or package changelog before marking such a build fixed; do not infer backport status from the version string alone. PHP also warns that the volunteer-maintained rpms.remirepo.net repository will not have these updates on release day, so owners using it need a supported distribution package or a controlled source-build plan.
Avoid treating an unrelated framework update as interpreter remediation. Laravel, Symfony, WordPress and vendor plugins may have their own security work, but a PHP core issue requires evidence about the PHP runtime itself. Application owners still need compatibility tests, because an emergency runtime update can change extension compatibility, error behavior or job execution. Security and reliability should share one controlled rollout, with a clear rollback criterion that does not silently restore the vulnerable runtime.
Patch verification is a deployment problem
A completed package install is not the same thing as a patched service. Verify three layers: the artifact, the running process and the request route. A newly built image can sit in a registry while production still serves the old digest. A host may have the new binary on disk while an existing worker remains loaded. A canary may be patched while the bulk of traffic uses a different pool. These are general deployment failure modes, not claims about the PHP vulnerabilities.
The deployment owner should give the incident lead a concise evidence bundle:
Artifact: exact package or image identifier, source channel, release or backport advisory and build date.
Execution: the runtime version reported by the process that now serves the application or runs the job, plus a restart or redeploy record.
Coverage: host and container inventory showing every intended replica and environment on the fixed build, including recovery images.
Behavior: a small regression suite for authentication, session handling, file processing, payments or other critical flows actually used by that application.
Exceptions: assets not patched, why they remain exposed or isolated, who approved the temporary control and the next review time.
Do not expose diagnostic endpoints or detailed runtime banners to the public merely to generate evidence. Run version checks through an internal channel with authorized access. Keep the evidence suitable for later audit and retesting, but exclude secrets, customer data and raw session material from shared tickets.
What to do if patching is delayed
PHP's advisory is explicit that updating is the only complete solution. It describes configuration measures that reduce specific attack paths while a rollout is in progress. For CVE-2026-109618, those include a server-level memory_limit=-1 that applications cannot override, request-size controls and a container or cgroup availability boundary. PHP warns that an underlying allocation failure can still reach the vulnerable path. For CVE-2026-109619, it recommends disabling session.upload_progress.enabled in configuration applied before request parsing and restarting every worker; on PHP 8.5, disabling fatal_error_backtraces and restarting blocks one confirmed path. These controls need compatibility and availability review, and PHP says they do not make an installation safe.
CERT-EU's initial advisory also recommends considering isolation of internet-facing applications when immediate patching is infeasible. The decision is application-specific. A public transaction system may not be able to go offline, while an administrative portal or rarely used endpoint may be restricted to an allowlisted management path. Document the business owner, expected duration, permitted users, monitoring and rollback plan for any temporary restriction.
Avoid claiming that a generic web application firewall rule blocks these flaws without a path-specific validation. A control that reduces exposure can still be valuable without being a verified substitute for a patch. External access restrictions, network segmentation and identity gates may shrink the reachable surface, but the vulnerable interpreter should remain on the remediation list until an official fix or verified provider backport is deployed.
If a legacy PHP branch is involved, ask the provider whether it supplies a documented fix. The PHP advisory notes minimal source-backports for 7.4, 8.0 and 8.1, while the lifecycle page says end-of-life branches no longer receive ordinary upstream support. A commercial extended-support provider or Linux distributor may offer a packaged backport, but the claim needs its own advisory. Otherwise plan a supported-branch migration with application compatibility work, not an indefinite exception labeled “mitigated.”
Investigate with evidence, not unverified indicators
At publication, PHP has described the mechanisms and a demonstrated mod_php exploit, but its advisory does not report an observed in-the-wild campaign or publish a universal indicator set. An incident team should preserve the information it would need to answer a later question: which apps were exposed during which windows, what changed in the runtime, and whether anomalous activity coincided with that exposure. A lab demonstration is reason to prioritize remediation, not proof that a particular organization was compromised.
Collect web access and error logs, reverse-proxy and WAF events, application logs, process telemetry, configuration-change records and deployment history according to the organization's retention and privacy rules. Compare current events with the normal request mix for each application, and record why an alert was escalated. Avoid assuming that unusual web traffic proves exploitation. Equally, avoid declaring an exposed instance safe solely because no signature fired before an authoritative detector existed.
If an asset shows suspicious behavior, follow the organization's incident-response process: preserve volatile evidence where feasible, isolate with the service owner, determine the affected identity and data scope, and avoid cleaning the host before evidence capture. Any public claim about exploitation, root cause or affected customers should come from the organization with direct evidence, not from this article.
Where independent testing fits after the patch
Patching a runtime and assessing the application are complementary. A patch changes the interpreter; it does not prove an application's authentication, authorization, business logic, file upload and API handling are sound. A web application penetration test can verify reachable roles and paths, test application-level controls and produce retest evidence after fixes. If the incident exposed management networks, identities or cloud deployment paths, add the relevant cloud scope rather than assuming a web-only test covers them.
The rules of engagement should name the applications, environments, user roles, testing windows, logging contacts and excluded workflows. The tester should avoid public proof-of-concept payloads against production and document how it validates controls safely. A useful finding ties a demonstrated behavior to business impact and a fix owner. For a regulated buyer, the report and retest results can support a compliance program and provide evidence for an audit; the test scope must still be clear.
Stingrai is a CREST-accredited penetration testing company headquartered in Toronto. Its human-led web and API engagements use authenticated testing across user roles and examine authorization, business logic, injection, authentication and session handling. Two named testers work on each human-led engagement, with confirmed findings delivered during the test and remediation retesting included. Stingrai offers one-time tests and continuous programs; for a single web application and associated APIs, Snipe and hybrid options are also available. A larger estate or incident-led scope is quoted separately.
A response checklist: today, this week and this quarter
Today: deploy the supported-branch fix. Assign an incident lead, map internet-facing PHP services and package owners, and prioritize mod_php where present. Update 8.2 to 8.2.35, 8.3 to 8.3.36, 8.4 to 8.4.27 and 8.5 to 8.5.12, or obtain a provider backport advisory. Set a controlled change window and a temporary isolation option for assets that cannot be patched promptly.
This week: prove the fix everywhere. Patch every relevant deployment path, verify artifact and live runtime, run critical-flow regression tests and record exceptions. Confirm old workers, canaries, recovery images and rollback artifacts cannot return the vulnerable build. Reassess logs using the official PHP technical details and any later verified incident disclosures.
This quarter: close structural gaps. Retire unsupported branches, remove stale images and emergency exceptions, improve runtime inventory, and commission scoped application, API or cloud testing where exposure or control gaps remain. Retest findings and keep the evidence available to security and audit owners.
This order should be revised if PHP revises its advisory, a provider issues a backport, or verified exploitation information emerges. The incident lead should record each revision with its source and timestamp so operational teams do not work from incompatible lists.
Questions to ask the patch owner and testing provider
For the platform owner: Which interpreter is actually serving each application? Which package or image channel supplied it? Have all replicas and long-lived workers restarted? What will a rollback restore? Can you show the release or backport advisory that proves the build contains the fix?
For the application owner: Which business flows require regression testing? Which maintenance windows are acceptable? What is the temporary isolation plan for an unpatchable app? Which accounts and API clients would be affected by that isolation?
For an independent tester: Which user roles and API routes will be assessed? How will production safety be maintained? Will the report distinguish runtime patch verification from application-level findings? What retest evidence will be delivered? A quote that promises to “scan for PHP2Shell” without naming the deployment, scope and validation method is too thin for enterprise procurement.
Frequently Asked Questions
Which PHP versions fix PHP2Shell?
The PHP project fixed CVE-2026-109618 and CVE-2026-109619 in 8.2.35, 8.3.36, 8.4.27 and 8.5.12. Update to the fixed build for your supported branch. PHP 8.1 and older have no new project release; PHP supplied minimal source-backports for 7.4, 8.0 and 8.1, and distribution or LTS packages require their provider's advisory. Verify the running interpreter rather than relying on an image tag or package name alone.
Are CVE-2026-109618 and CVE-2026-109619 confirmed?
Yes. PHP's 21 October 2026 advisory identifies CVE-2026-109618 as remote code execution through out-of-memory request corruption and CVE-2026-109619 as remote code execution through stale global state used by a later request. PHP's advance notice rated each issue CVSS v4.0 9.2. The official advisory and release entries are the current sources for their fixes.
Is there confirmed exploitation in the wild?
PHP reports a demonstrated unauthenticated exploit in mod_php, which is why it rates that configuration highest risk. Its 21 October advisory does not report an observed in-the-wild campaign. Treat the demonstration as urgent patch evidence, and check later PHP, CISA and incident-response disclosures before claiming that an installation was exploited.
Does updating a PHP framework fix these issues?
No framework update, by itself, proves that the PHP interpreter serving the application contains the fix. Verify the runtime release or provider backport, then confirm the executing process and deployed replicas use it. Test the application for compatibility and for application-level security issues separately.
What should an enterprise do if it cannot patch immediately?
PHP says only updating is a complete solution. If deployment is delayed, assess its documented path-specific configuration measures with the service owner, restart workers where required, and consider isolating internet-facing applications as CERT-EU recommends. Record who approved each temporary restriction and monitor the remaining exposure. Keep the runtime on the remediation list until a fixed build or verified backport is running.
Should a penetration test follow the PHP patch?
Yes, when an exposed application or unresolved control gap warrants independent validation. A scoped web and API penetration test can examine authentication, authorization, business logic and other application behavior after the runtime rollout, and retest remediated findings. It should define the tested roles, environments and production-safety limits in writing.
Related reading
References
PHP security team. Security advisory: Critical remote code execution vulnerabilities, update now. 21 October 2026. CVE mechanisms, fixed builds, supported and older branch guidance, configuration limits and risk context.
PHP security team. Upcoming Critical PHP Security Release. 20 October 2026. Advance CVSS v4.0 scores and original release schedule.
CERT-EU. Critical Vulnerabilities in PHP, advisory 2026-018. 20 October 2026. Initial defensive isolation advice, superseded by PHP for patch floors and mechanisms.
PHP development team. Supported Versions. Accessed 21 October 2026. Branch lifecycle context.
PHP development team. Linux/Ubuntu Downloads and Installation Instructions. Accessed 21 October 2026. Third-party package provenance caveat.
PHP Documentation Group. phpversion. Accessed 21 October 2026. Runtime version reporting.
Talk to Stingrai
For an independent test of the applications and APIs behind your PHP rollout, get a quote or book a free discovery call. Include the application list, environments and roles so the assessment addresses your actual exposure.


