php2shellPatch

CVE-2026-109618 · CVE-2026-109619 · CVE-2026-115560

Two PHP runtime flaws can allow unauthenticated code execution, data exposure, or crashes. A related follow-up, CVE-2026-115560, adds a configuration-dependent session upload progress RCE vector.

Last checked

Update chronology

  1. PHP and Cloudflare published their initial security and mitigation guidance for CVE-2026-109618 and CVE-2026-109619.

  2. PHP published its session upload progress informational advisory for the related CVE-2026-115560, describing unusual serializer configuration prerequisites and recommending disabling upload progress pending the next regular bugfix release.

  3. CISA added the original CVE-2026-109618 and CVE-2026-109619 vulnerabilities to KEV.

  4. Cloudflare launched its PHP Capture the Flag challenge to test WAF protections through the Bug Bounty program.

  5. Cloudflare reported that PHP CTF submissions helped harden php2shell WAF protections and create new detections.

Overview

What happened

php2shell is the name used for two PHP runtime vulnerabilities disclosed on 21 October: CVE-2026-109618 and CVE-2026-109619. They affect how PHP manages memory when processing an HTTP request fails unexpectedly, including when memory is exhausted.

Normally PHP allocates memory to process a request and safely releases it when work finishes. In these cases, an error can interrupt that process. PHP may then use internal data that was never fully initialized, or later follow references to memory that has already been released.

An attacker can send specially crafted HTTP traffic to trigger those conditions. The result can range from a crashed PHP process to information disclosure or attacker-controlled code execution. Updating website code or a plugin alone does not fix the runtime defect.

Related follow-up: CVE-2026-115560. PHP's 23 October informational advisory describes an additional RCE vector involving session upload progress. It requires upload progress to remain enabled and the application to switch its session serializer from php_binary or php_serialize to php at runtime, using ini_set() before session_start(). The advisory recommends disabling session upload progress pending the next regular bugfix release; applications that never change the serializer at runtime can keep the feature enabled. Patching the original php2shell vulnerabilities does not establish that this follow-up is addressed.

CVE-2026-109618 and CVE-2026-109619 are listed in CISA KEV as known exploited. Exploitation of CVE-2026-115560 is not established in the reviewed sources.

Why this needs attention

CISA has listed CVE-2026-109618 and CVE-2026-109619 as known exploited. The related CVE-2026-115560 requires a separate session-configuration assessment; exploitation of that follow-up is not established in the reviewed sources. These PHP runtime issues require attention beyond application-code or plugin updates.

Who should investigate

Teams running PHP 5.4 or later should review the original runtime vulnerabilities, including applications built on WordPress, Magento, and other PHP frameworks. The related CVE-2026-115560 has narrower prerequisites: session upload progress is enabled, and application code changes session.serialize_handler from php_binary or php_serialize to php at runtime before session_start(). Assess each CVE against its own advisory.

What to do now

Patch the PHP runtime using the original security advisory and separately review PHP's session upload progress advisory for CVE-2026-115560. Keep compensating controls in place while patching, and ask managed hosting providers to confirm each issue's status.

  1. Identify internet-facing applications running PHP and establish their runtime version.

  2. Apply the PHP project’s security update, including through managed hosting providers.

  3. Review the session upload progress advisory for CVE-2026-115560 separately, including application serializer changes and any vendor updates that supersede its interim guidance.

  4. Review logs and incident-response processes for suspicious PHP request activity.

  5. Keep edge mitigations enabled while the update is being deployed.

Assess your exposure with an agent

Copy this prompt into an agent with access to your infrastructure. It asks for an evidence-based assessment of affected systems, exposure, and gaps that need investigation.

Assess whether the infrastructure available to you is affected by the original php2shell vulnerabilities (CVE-2026-109618 and CVE-2026-109619) and the related session upload progress issue CVE-2026-115560. Perform a read-only assessment within your authorized access. Do not send exploit payloads, trigger memory exhaustion, or change systems.

1. Verify the current PHP advisories at https://www.php.net/archive/2026.php#2026-10-21-5 and https://www.php.net/archive/2026.php#2026-10-23-1, along with any superseding PHP, operating-system, or hosting-provider advisories. Establish affected and fixed releases or interim guidance for each CVE, including vendor backports. Cite sources and retrieval dates; flag anything you cannot verify. Report applicability, patch status, and exploitation evidence separately for each of the three CVEs. Do not extend CISA KEV evidence for the original two vulnerabilities to CVE-2026-115560.

2. Inventory PHP across accessible hosts, containers, Kubernetes workloads, images, and managed hosting, including WordPress, Magento, and other PHP applications. Record the service, environment, owner where known, runtime/package version, and image digest or build identity. Distinguish running deployments from repository declarations and unused images. Check the PHP runtime actually serving requests (for example PHP-FPM or Apache), not just the CLI version. If updates were installed, verify that running processes and replicas use the updated build.

3. Compare each deployed runtime against authoritative advisories for the original two CVEs. Do not treat an older version string as vulnerable if the vendor documents a backported fix, or an updated application/plugin as evidence that PHP itself is patched. Identify internet-facing and internal request paths, including origins reachable directly. Record access gaps; absence of PHP in one repository does not establish its absence across the infrastructure.

4. Assess CVE-2026-115560 separately. Inspect effective session.upload_progress.enabled and session.serialize_handler configuration, and application code that uses ini_set() to switch the serializer from php_binary or php_serialize to php before session_start(). Verify the relevant request-handling configuration rather than relying on CLI defaults. If configuration or code is inaccessible, report unknown. Follow current vendor guidance to distinguish fixed, mitigated, and not-applicable deployments; do not assume that updates for the original two CVEs also resolve this follow-up. Report findings without changing settings.

5. Report WAF or other compensating controls separately from runtime patch status. Where configuration is accessible, check whether relevant traffic is proxied, applicable rules are enabled in Block, and exceptions or bypass paths exist. Verify coverage for each CVE rather than assuming one php2shell rule covers every path. A WAF rule, blocked attack, or lack of alerts does not prove that the runtime is patched or that compromise has not occurred.

Return a concise summary and a table: asset/service | deployed runtime/build | assessment per CVE (affected, fixed, not applicable, or unknown) | compensating controls | exposure | supporting evidence | next action. Prioritize affected internet-facing services. List unassessed systems and the exact evidence or access needed to resolve unknowns. Link to current vendor remediation guidance and propose verification steps without applying changes. Do not conclude that the entire infrastructure is unaffected unless the assessed scope supports that conclusion.

Find more information and resources at https://radar.cloudflare.com/security/zero-wire/php2shell

Cloudflare coverage

Product coverage

Cloudflare has WAF rules for known php2shell exploit patterns. They are a compensating control, not a fix for the vulnerable PHP runtime.

Review your WAF configuration to determine whether you are protected.

Service status

No impact to Cloudflare identified from the original php2shell vulnerabilities; monitoring continues.

Evidence and sources

Requests matching Cloudflare's php2shell WAF rules

Daily requests on all plans, relative to the peak day.

Vendor advisory

Authoritative affected-version and remediation guidance for the original CVE-2026-109618 and CVE-2026-109619 vulnerabilities.

Related session upload progress advisory

PHP's 23 October informational advisory covers CVE-2026-115560, its unusual session serializer prerequisites, and interim mitigation. It explicitly connects this guidance to a mitigation already listed for CVE-2026-109619; the follow-up needs a separate applicability and remediation assessment.

CVE records

Identifiers for the two original php2shell vulnerabilities and the related session upload progress follow-up.

CISA KEV

CVE-2026-109618 and CVE-2026-109619 were added to CISA's Known Exploited Vulnerabilities Catalog on 26 October 2026. This statement does not extend to CVE-2026-115560. CISA's entries for the original two CVEs say ransomware use is unknown and require forensic triage for covered federal agencies.

Coordinated disclosure and research

Cloudflare's disclosure account identifies the PHP Foundation, Calif.io, Wiz, OpenAI, and Quarkslab as coordination participants.

Exploit evidence

Cloudflare reported observing attack traffic targeting customers for the original php2shell vulnerabilities. This is evidence of observed attempts, not a claim about a particular organization's compromise. Exploitation of the related CVE-2026-115560 is not established in the reviewed sources.

Protection testing

Cloudflare's PHP Capture the Flag challenge invites researchers to test php2shell WAF protections in a designated sandbox under its Bug Bounty program. The 30 October update reports that submissions helped harden existing protections and create new detections. WAF protections do not replace PHP updates.