CVE-2026-109618 · CVE-2026-109619 · CVE-2026-115560
PHP runtime flaws can let unauthenticated attackers run code; a related session upload progress flaw affects applications with specific session settings.
Last reviewed
Updates
Cloudflare updated detection for php2shell WAF rules #2 and #3 in the Free and Managed Rulesets, based on PHP CTF reports.
Cloudflare updated detection for php2shell WAF rules #3 and #4 in the Free and Managed Rulesets, and reported that PHP CTF submissions helped harden protections and create new detections.
Cloudflare updated detection for php2shell WAF rule #6 in the Free and Managed Rulesets, based on PHP CTF reports.
Cloudflare launched its PHP Capture the Flag challenge to test WAF protections through the Bug Bounty program.
CISA added the original CVE-2026-109618 and CVE-2026-109619 vulnerabilities to KEV.
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.
Cloudflare confirmed that php2shell WAF rule #6 in the Free and Managed Rulesets also covers CVE-2026-115560.
Cloudflare added seven php2shell WAF rules to the Free and Managed Rulesets, with Block as the default action, and published mitigation guidance.
PHP published its initial security guidance for CVE-2026-109618 and CVE-2026-109619.
Vista geral
Detalhes
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.
Risk
CISA lists the original two flaws as known exploited. The separate session upload progress flaw was not in CISA's catalog on November 9.
Affected deployments
Review PHP 5.4 or later serving web requests: PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix the original two flaws, and older branches need a vendor backport. The follow-up affects applications that enable session upload progress and change the serializer at runtime before starting a session.
Recommended action
Update the PHP runtime using the vendor advisory, and assess CVE-2026-115560 separately. Ask your hosting provider to confirm fixes if it manages PHP.
Identify Internet-facing applications running PHP and establish their runtime version.
Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or install your vendor's backported fix, including through managed hosting providers.
Review the session upload progress advisory for CVE-2026-115560 separately, including application serializer changes and any vendor updates that supersede its interim guidance.
Review logs and incident-response processes for suspicious PHP request activity.
Keep edge mitigations enabled while the update is being deployed.
Use this prompt with an agent that can inspect your infrastructure.
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/zero-wire/php2shell
Cloudflare coverage
Service status
No impact to Cloudflare identified; monitoring
We have found no impact to Cloudflare from PHP2Shell. When the vulnerabilities were disclosed, our security and engineering teams rolled out mitigations and patches across Cloudflare's PHP systems to prevent impact. We also tested our security posture against these vulnerabilities. Our review continues, and we will update this notice if anything changes.
Product coverage
The Cloudflare Free and Managed Rulesets each include seven PHP Remote Code Execution Attack rules for CVE-2026-109618 and CVE-2026-109619, with Block as the default action; rule #6 in each also covers CVE-2026-115560. The rules are a compensating control, not a fix for the vulnerable PHP runtime.
- PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619)
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619) #2
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619) #3
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619) #4
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619) #5
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619, CVE-2026-115560) #6
Default action: Block · Free plans, Paid plans - PHP Remote Code Execution Attack (CVE-2026-109618, CVE-2026-109619) #7
Default action: Block · Free plans, Paid plans
Review your WAF configuration to determine whether you are protected.
Evidence and sources
Vendor advisory
PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix CVE-2026-109618 and CVE-2026-109619. PHP 8.1 and older no longer receive updates from the PHP project and need a vendor backport or an upgrade.
Related session upload progress advisory
The October 23 advisory explains the serializer settings required for CVE-2026-115560 and when to disable session upload progress. This follow-up needs a separate assessment from the original two flaws.
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 observed attack attempts against the original php2shell vulnerabilities. These observations do not establish whether a particular deployment was compromised.
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.