Cisco-first interim defenses for CVE-2026-109618 and CVE-2026-109619
The three-minute briefing
Treat PHP2Shell as an emergency change: identify exposed runtimes now, prioritize patching, and explicitly approve any continued exposure. These flaws can enable unauthenticated code execution and disclosure of process memory. Temporary controls can reduce selected risks, but do not make vulnerable PHP safe. [1] [2] [3] [11]
PHP released fixes on October 21 for two critical vulnerabilities rated CVSS v4.0 9.2. The affected component is PHP itself. Some attacks run before application code, which makes an application login page or an in-application security plugin an unreliable boundary. PHP lists all web-serving integrations as at risk and identifies Apache mod_php as particularly exposed. [1] [4]
Talos lists Snort SIDs 67359, 67360 and 67375. This is published coverage of particular patterns, not proof that every trigger is blocked. Talos states that no temporary control provides comprehensive protection. Validate the deployed feed, rule revisions, blocking actions, inline path and HTTP visibility; encrypted HTTPS alone does not expose payloads for these rules. [4] [9]
Start with existing controls. Deploy the verified IPS rules and any documented PHP2Shell WAF protections. Restrict the origin so requests cannot bypass those controls. For private applications, place access enforcement ahead of PHP. If continued exposure is unacceptable, stop forwarding requests to the vulnerable runtime and serve a static maintenance response upstream.
Containment still matters if an exploit gets through. Secure Workload or Cilium policies can limit reachable services; endpoint and runtime controls can detect or stop selected malicious behavior. Their value depends on enforced policies and platform support. A PHP process may leak secrets through its ordinary HTTP response without launching a shell or opening a new outbound connection. [11] [12] [13] [14] [15]
PHP also documents temporary configuration changes for individual attack paths. These require operational care: disabling PHP’s finite memory limit changes failure behavior and can damage availability. Configuration work must proceed alongside an emergency upgrade, with a named owner, an expiry time for exceptions, and evidence that every running worker has been replaced.
Cisco CEO Chuck Robbins urged leaders to identify exposed PHP systems and accelerate patching. NSA recommends taking systems offline when an immediate update is infeasible, until fully mitigated. CJ Moses, CISO of Amazon Integrated Security, advises measuring patch and mitigation timelines for critical internet-facing vulnerabilities in hours. Together, these calls reinforce the need for accountable owners and emergency change decisions. [24] [27] [28]
A PHP process may leak secrets through an allowed HTTP response without launching a shell or opening a new outbound connection.
Read the complete technical analysis and response checklist
What the vulnerabilities change
CVE-2026-109618 concerns memory-allocation failure interrupting partially initialized request data. Cleanup can consume that invalid state. Apache mod_php can reach this sequence during startup before application execution; PHP-FPM exits the worker on startup failure; the PHP advisory does not demonstrate a complete FPM exploit for this CVE, but identifies susceptibility after successful startup. Changing the integration is not a complete remediation. [2]
CVE-2026-109619 concerns request-owned state remaining reachable after its memory is released. A later request on the same worker can consume it too early. Confirmed session paths include mod_php and PHP-FPM; the exact prerequisites vary. This is broader than one upload endpoint or one content management system. [3]
Researchers demonstrated both code execution and process-memory disclosure. Their test applications included WordPress, Drupal and Joomla, but the vulnerability is not confined to those products. Code executes with the worker’s privileges; root compromise is not an automatic consequence. Secrets already available to that worker are an immediate concern. [11]
The upstream upgrade baseline
| PHP branch | First fixed upstream release |
|---|---|
| 8.2 | 8.2.35 |
| 8.3 | 8.3.36 |
| 8.4 | 8.4.27 |
| 8.5 | 8.5.12 |
Use these releases or a later fixed release in the same supported branch. Verify distribution packages against the distributor’s advisory: a backported fix may retain an older upstream version number. PHP also published minimal source backports for 7.4, 8.0 and 8.1; this does not restore normal upstream support. [1]
For example, Ubuntu lists fixed PHP packages for supported releases and additional older releases through ESM. Confirm the exact package revision and applicable support channel before declaring a legacy deployment unpatchable. [20]
Interpret current exploitation reporting carefully
Talos reported no exploitation observed by its team as of 14:00 UTC on October 21. watchTowr’s advisory, published at 14:19 UTC, reports active exploitation attempts against both CVEs; Cloudflare reports attack traffic and payload variations. These observations have different scopes and times. [4] [10] [25]
In an October 21 post, CJ Moses reports that Amazon identified a PHP2Shell exploitation attempt in MadPot honeypot telemetry dating to October 17, before public disclosure, followed by additional attempts on October 21. Amazon explicitly leaves uncertain whether the early attempts would have succeeded on real-world systems. Moses recommends investigating from at least October 17. This is a reason to extend the investigation window, not evidence that any particular customer was compromised. Do not wait for local indicators before patching. [28]
Put Cisco intrusion prevention on the actual request path
Cisco Secure Firewall Threat Defense with Snort is the first Cisco control to validate because Talos has published vulnerability-specific coverage. An installed appliance or an updated management server is not evidence that these rules protect a particular application.
| SID | Published coverage or verification note |
|---|---|
| 67359 | Serialized PHP array patterns associated with integer key collision exploitation. [5] |
| 67360 | Multipart requests using the default PHP session upload progress marker. [6] |
| 67375 | Listed in the Talos coverage section. Confirm its current description, revision and availability in the deployed feed. [4] |
Talos also states that community rules are available. Open-source Snort is an option where customers can operate it correctly. Check which SIDs and revisions the selected feed actually supplies; do not infer universal coverage from the availability of a community ruleset. [4]
Deployment checks
- Update the content for the device’s actual engine. Cisco uses SRU for Snort 2 and LSP for Snort 3. Confirm the device received the expected package and verify each SID and revision in its active policy. Check the required intrusion-prevention entitlement for your deployment. [7] [22]
- Set the applicable rules to the blocking action supported by that release and deploy the policy. Confirm that traffic matches the intended Allow rule with intrusion inspection. Review earlier Trust, Fastpath and other bypass decisions. A passive sensor or alert-only policy cannot provide inline prevention. Use the configuration guide for your exact release and engine; do not equate network analysis policy mode with individual intrusion rule actions. [8] [22]
- Verify HTTPS handling. Use supported inbound decryption or inspect HTTP after TLS termination and before PHP. Re-encryption from a load balancer to the origin can hide the payload again. Confirm the real protocol, decryption outcome, both traffic directions and processing capacity; validate TLS and mutual-TLS support for the chosen method and release. Encrypted traffic classification does not expose HTTP bytes to these signatures. [9]
- Check inspection depth, oversized-body behavior and exception handling. Requests accepted by the application must not silently evade inspection because an intermediary stops parsing early. Datadog specifically highlights this issue for PHP2Shell. [19]
- Verify deployment success and event delivery. Inspect the actual inline result, not just the event name. Cisco distinguishes packets dropped from packets that would have been dropped under different enforcement conditions. [21]
Recommended validation: use a dedicated benign test rule to establish the inspection path, then a vendor-approved test method in an isolated lab to validate CVE-specific coverage. The first test proves connectivity through inspection; it does not prove that every exploit variant will be detected. Exercise normal login, API and upload flows for regressions.
Use a WAF where it can add verified coverage
Cloudflare reports deploying PHP2Shell protections for free and paid WAF customers, including request and response analysis. Its full transaction capability can block a matching origin response before delivery. Paid customers should verify the managed ruleset is deployed in block mode and inspect overrides and exceptions. These are vendor-published mitigations, not independent proof that every variant is stopped. [10]
For customers already using another WAF, request an explicit bulletin for both CVEs, rule identifiers, supported versions, enforcement instructions and known limitations. Generic SQL injection or command injection policies are insufficient evidence for a PHP memory-safety flaw. A new product rollout should not delay an update already ready to install.
Recommended origin policy: accept application traffic only through approved ingress services. Check direct IP access, alternate hostnames, IPv6, cloud load balancers, internal routes and nonstandard ports. Where appropriate, authenticate the proxy-to-origin connection. DNS pointing at a CDN does not itself prevent origin bypass.
Apply PHP configuration mitigations with their limits
PHP documents path-specific exposure reductions, not comprehensive protection. Datadog likewise describes partial mitigation. Apply changes in configuration effective before the relevant parsing stage, restart every affected worker, and verify effective settings and worker turnover on each replica. Treat these as separate compatibility and capacity changes. [2] [3] [19]
| Change | Benefit and remaining limitation |
|---|---|
| memory_limit = -1 — CVE-2026-109618 | Removes the predictable PHP memory-limit trigger for the OOM class. Underlying allocation failures remain possible. Enforce administratively, restart workers and ensure overrides do not restore a finite limit. [2] |
| Bound request parsing upstream — CVE-2026-109618 | Constrain decoded body size, fields, multipart parts, per-part headers and nesting. Cover requests without usable Content-Length. Block multipart before PHP where unused. This reduces pressure; it does not repair PHP. [2] |
| Constrain OS memory use — Availability boundary | A cgroup or container memory.max boundary can limit availability impact. It can kill multiple workers or a whole container and is not guaranteed to prevent allocation failures. Do not substitute RLIMIT_AS or RLIMIT_DATA. [2] |
| session.upload_progress.enabled = 0 — CVE-2026-109619 | Apply in startup configuration and restart every worker. Blocks the demonstrated session lifecycle paths, not all stale-state variants. Do not rely on application ini_set() or FPM .user.ini. [3] [4] |
| fatal_error_backtraces = 0 on PHP 8.5 — CVE-2026-109619 | Removes the demonstrated fatal-backtrace producer. Other request-owned state remains relevant. Enforce administratively and restart workers. [3] |
| Clean up diagnostics and fatal paths — CVE-2026-109619 | Remove invalid per-request settings and address attacker-reachable fatal errors and timeouts. Suppressing error display does not prevent stale-state consumption. [3] |
PHP suggests post_max_size of 8M without upload needs, or 32M when uploads are needed, with upload_max_filesize below it. Validate actual business requirements. These sizes are starting points, not safe thresholds or replacements for limits at the proxy. [1]
Constrain the worker and its reachable services
The controls below are proposed uses of documented capabilities. No PHP2Shell-specific coverage for these products was identified in the sources reviewed as of October 21, 2026. Effectiveness depends on supported platforms and enforced policies; it must be validated in the customer environment.
| Technology | Practical interim use | What it does not establish |
|---|---|---|
| Secure Workload | Enforce workload policies permitting ingress from approved proxies and only required database, DNS and service connections. [12] | No repair of memory corruption inside an allowed connection. |
| Cilium | Select PHP workloads with explicit ingress and egress policies; allow only required peers and ports. Verify enforcement mode. [13] | Installing the CNI alone does not produce a restrictive policy. |
| Secure Access | Move suitable private applications behind configured private-resource access controls; remove public origin access. [16] | Authorized or compromised clients can still reach vulnerable PHP. |
| Secure Endpoint | Enable supported prevention and behavioral controls; keep the connector healthy and investigate worker activity. [15] | No PHP2Shell-specific prevention guarantee verified here. |
| Tetragon | Trace selected process, file and network operations; enforce tested policies on supported hooks. [14] | A process kill does not necessarily undo or block the triggering operation. |
Build a small application dependency allowlist
Secure Workload documentation says agent enforcement is disabled by default. Confirm enforcement is enabled and inspect the reported policy status. For Cilium, default mode leaves endpoints unrestricted until policies select them; evaluate both directions and any broader allow rules. Inventory or visibility alone is not containment. [12] [13]
Recommended policy design: allow the approved ingress tier to the web listener; allow PHP to its specific database service and required application dependencies; permit managed DNS, telemetry and update paths; deny unrelated administrative networks and unnecessary Internet destinations. Test required business transactions before enforcement. Secure Workload host policies and Cilium pod policies provide different enforcement points for this design. [12] [13]
Add OS controls where practical: a dedicated unprivileged service identity, minimal filesystem write permissions, and tested SELinux or AppArmor profiles. Avoid making unrelated application secrets available to the worker. Researchers recommend these controls to constrain impact, while explicitly warning that memory disclosure can remain possible. [11]
Egress restrictions primarily constrain new connections and lateral movement. They do not necessarily stop disclosure in the response to an already permitted inbound request. Likewise, preventing shell execution leaves other in-process actions possible. These limitations are why network and runtime controls supplement the runtime update.
Detect attempts and investigate possible compromise
Use runtime controls for concrete prohibited behavior
eBPF is the implementation mechanism, not an automatic PHP2Shell defense. In this design, Cilium supplies network policy and Tetragon supplies kernel-level observation and selected enforcement. The protected workload, policy, hook and enforcement action determine the effect. [13] [14]
Secure Endpoint supplies prevention, behavioral analysis, investigation and response capabilities. Check the exact operating system, connector and feature support on each server; verify policy and exclusions rather than assuming every platform has identical protection. Use official connector documentation to confirm server support. Worker ancestry, new executable files and unexpected execution are investigation leads. [15] [26]
For Tetragon, target behaviors that the application does not legitimately need, such as selected executable launches or writes to protected code locations. Scope policies to the workload and test them under real traffic. Tetragon supports return-value override and signal actions. Its documentation warns that SIGKILL alone may terminate a process after the triggering operation has taken effect; choose supported hooks and enforcement semantics accordingly. Verify kernel support for each hook/action and confirm enforcement is active before relying on a policy. This is engineered containment, not a packaged CVE fix. [14]
Correlate signals across the application path
Recommended Splunk workflow: normalize the origin host or pod identity, correlate WAF and IPS events with PHP and reverse-proxy logs, and enrich with endpoint and network telemetry. Splunk Enterprise Security supports detections across these data sources. The hypotheses below are proposed analytics to adapt and test, not prebuilt validated PHP2Shell detections. [18]
| Investigation lead | Useful corroboration |
|---|---|
| Snort or WAF match | Enforcement action, origin identity, matching rule revision and request metadata. |
| Unusual form traffic | Abnormally long fields or unexpected binary/control data plus PHP errors. [19] |
| Unexpected worker behavior | New shell or utility process, changed application files, or unapproved network access. |
| Crashes or unusual responses | Memory errors, restarts, repeated failures, or abnormal PHPSESSID response sizes. [11] [19] |
Datadog demonstrated execution with an HTTP 200 response and without a worker crash. A detection strategy that requires a 500 error, a crash or a dropped file will miss relevant activity. Memory errors alone are also not proof of exploitation. [19]
Secure Network Analytics can add evidence of new communications, lateral movement or unusual data transfer. Use it as behavioral visibility; encrypted-flow analytics does not establish whether an HTTP payload matched a PHP exploit signature. [17]
Record response header lengths or anomaly metadata where possible instead of collecting session secrets wholesale. If telemetry supports suspected compromise, isolate the affected workload, preserve evidence, investigate exposed credentials and replace it from a trusted patched image. Patching alone does not remove persistence or revoke secrets already stolen.
Run an emergency change with an explicit finish line
The following sequence is a proposed customer operating process. Adjust timing to exposure and service criticality. Start with existing enforcement tools and the available patch path; avoid turning an urgent runtime update into a platform migration.
Find the runtime serving each application
Assign an application owner and platform owner. Inventory the PHP runtime, integration, package provenance, origin addresses, hosting provider, container image digest and active workers. Include standby nodes, development services reachable from production, disaster recovery images and autoscaling templates. A workstation’s php -v output does not identify the runtime serving a remote application.
Choose the temporary operating state
For each unpatched application, record one state: offline; access restricted upstream; or publicly reachable under a named, time-bound risk exception with documented controls and a patch deadline. Prioritize exposed mod_php services and applications handling valuable secrets. When the residual risk is unacceptable, remove the PHP origin from service. A maintenance page generated by that same PHP application does not stop the runtime from receiving requests.
Apply and prove the controls
Record the deployed rule package, SIDs, policy action, inspection path, bypass exceptions and test evidence. Verify origin restrictions from representative authorized network vantage points. Review accepted body limits against inspected body limits. Track false positives and availability changes, especially after altering PHP memory behavior.
Patch the deployment and its future replacements
Use the supported vendor update or an approved fixed image. Canary critical application transactions, then roll through the fleet. Restart or replace all affected workers. Update the source image and deployment definition so a restart, rollback or autoscaling event cannot resurrect the vulnerable runtime. Ubuntu specifically notes that package updates still require application restarts or reboot. [20]
Require evidence before closure
- Each application maps to an owner, a running runtime and a fixed upstream release or documented vendor package revision.
- Every replica and standby has been checked; old workers are gone and future deployments use a fixed image or package source.
- Required business flows pass after the update, including authentication, APIs, imports and permitted uploads.
- Temporary memory and diagnostic settings have been reviewed against the patched runtime; useful ingress and segmentation controls remain.
- Document a risk-based decision on session invalidation and rotation of secrets accessible to the worker. Consider exposure duration, available telemetry and suspected disclosure; clean logs do not prove secrets remained confidential. Preserve evidence and involve incident response where warranted.
The useful customer outcome is a short, evidenced period of reduced exposure followed by a verified runtime update. A rule match count, a green endpoint icon or a successful package installation is only one piece of that evidence.
Sources and scope
This is independent analysis, not an employer endorsement. Deployment designs and operating steps are recommendations. No customer environment or exploit-prevention efficacy was tested for this article. Product coverage and package guidance can change; confirm the deployed release and current vendor advisories.
- PHP security announcement and fixed releases
- PHP advisory for CVE 2026 109618
- PHP advisory for CVE 2026 109619
- Cisco Talos PHP2Shell advisory and coverage
- Snort rule documentation for SID 67359
- Snort rule documentation for SID 67360
- Cisco rule packages and software version verification
- Cisco Secure Firewall intrusion policy deployment
- Cisco Secure Firewall traffic decryption
- Cloudflare PHP2Shell WAF protection
- PHP2Shell research and response guidance
- Cisco Secure Workload policy enforcement
- Cilium policy enforcement modes
- Tetragon runtime enforcement semantics
- Cisco Secure Endpoint capabilities
- Cisco Secure Access private resource access
- Cisco Secure Network Analytics capabilities
- Splunk Enterprise Security detection searches
- Datadog Security Labs PHP2Shell analysis
- Ubuntu fixed packages and support coverage
- Cisco FMC intrusion events and inline results
- Cisco FMC intrusion policy and traffic evaluation
- Cisco Live Protect scope and limitations
- Chuck Robbins PHP advisory post as reposted in Cisco’s public LinkedIn feed
- watchTowr reporting on PHP2Shell exploitation attempts
- Cisco Secure Endpoint connector and feature documentation
- NSA critical patches recommended for PHP vulnerabilities
- CJ Moses on Amazon PHP2Shell telemetry and immediate response
Leave a Reply