Thirty-three CVE identifiers circulated alongside the php2shell disclosure. They span PHP, GitLab, Cisco, Citrix, Fortinet, Atlassian, SAP, Dell, Microsoft, F5, HPE, the Linux kernel, Node.js, Go and CPython. Read as a list, it looks like a catastrophic week. Read against the CVE records and the CISA KEV catalog, it is five confirmed exploited vulnerabilities, two more with vendor-confirmed exploitation that the catalog has not yet absorbed, and a long tail of critical-scored bugs with no public evidence of attack.

This is the reconciled table, with the exploitation status stated separately from the severity score, because those two numbers have almost nothing to do with each other.

Web runtimes and developer platforms

CVEProductCVSSExploitation status
CVE-2026-109618PHP core, OOM corruption9.2Exploited in the wild (AWS, watchTowr); not in KEV
CVE-2026-109619PHP core, stale global state9.2Exploited in the wild (AWS, watchTowr); not in KEV
CVE-2026-97229GitLab CE/EE, regex RCE10.0No public exploitation reported
CVE-2026-110264GitLab CE/EE, regex integer overflow10.0No public exploitation reported
CVE-2026-111497Node.js Brotli decoder OOB writeHighNo public exploitation reported
CVE-2026-111943Go crypto/x509 trust changen/aNot a memory-safety issue
CVE-2026-19445CPython SSLContext UAF9.2No public exploitation reported

The GitLab pair is the most interesting entry in this group because the two records describe the same component twice. CVE-2026-97229 covers a missing validation check on a specially crafted regular expression in CI/CD configuration, fixed in 19.2.8, 19.3.5 and 19.4.2. CVE-2026-110264 covers an integer overflow when compiling a crafted regular expression, fixed across 7.0 through 19.5.1. Both are unauthenticated remote code execution on the GitLab server.

The version ranges tell the story. A fix that reaches back to GitLab 7.0 is not a recent regression; it is a long-lived bug in the regex compiler that CI/CD configuration can reach. The 97229 fix appears to be a validation gate in front of that compiler, and 110264 the arithmetic bug underneath it. Two CVSS 10.0 scores in the same subsystem in the same release cycle is a signal that the component needed an audit, not a patch.

CVE-2026-19445 in CPython deserves a mention for structural reasons. A remote, unauthenticated TLS client can make a server crash or call through a freed pointer when sni_callback assigns a different context to SSLSocket.context and nothing else keeps the original ssl.SSLContext alive. That is a use-after-free created by a lifetime rule in a callback — the same shape as the var_destroy bug discussed earlier, in a different language. The mitigation is to hold a reference to every context you install.

CVE-2026-111497 is the Node.js Brotli decoder out-of-bounds write, rated high by the Node project, fixed in 22.23.4, 24.22.1 and 26.12.1. Note that at the time of writing the identifier has no published record in the CVE Services API; the authoritative source is the Node.js security release itself. Reachability depends on whether the application decompresses Brotli data it did not produce, which is common in proxy and API-gateway code and rare in application logic.

Network edge and infrastructure

CVEProductCVSSExploitation status
CVE-2026-88771Citrix NetScaler ADC/Gateway, input validation RCE9.5KEV, added 2026-09-27
CVE-2026-88772Citrix NetScaler, memory overflow RCE/DoS9.5KEV, added 2026-09-27
CVE-2026-88773Citrix NetScaler, HTTP request smuggling9.3No public exploitation reported
CVE-2026-88775Citrix NetScaler, memory overflow8.8No public exploitation reported
CVE-2026-88776Citrix NetScaler, memory overflow8.8No public exploitation reported
CVE-2026-88777Citrix NetScaler, memory overflow8.8No public exploitation reported
CVE-2026-88778Citrix NetScaler, TCP ISN prediction8.8No public exploitation reported
CVE-2026-15176F5 NGINX ngx_http_core_module8.1Not exploited, per F5
CVE-2026-93479F5 NGINX map directive and regex matching8.1Not exploited, per F5
CVE-2026-97205F5 NGINX ngx_http_core_module8.1Not exploited, per F5
CVE-2026-76742HPE AOS-Switch, auth bypass9.8No public exploitation reported
CVE-2026-76743HPE AOS-Switch, auth bypass9.8No public exploitation reported
CVE-2026-76744HPE AOS-Switch, unauthenticated buffer overflow RCE9.8No public exploitation reported
CVE-2026-99999Linux kernel, IPv4 checksum handling9.3No public exploitation reported
CVE-2026-98283Linux KVM PPC64, use-after-free8.8No public exploitation reported

Citrix is the only edge vendor here with confirmed exploitation, and both RCE bugs are in KEV. The smuggling bug, CVE-2026-88773, is arguably the more dangerous of the unlisted three, because request smuggling bypasses the front-end controls that everything behind the appliance assumes are working. A 9.3 with no exploitation report is not a low priority; it is a control-plane bug.

The three NGINX entries are all in the same module family and all fixed in the same release. ngx_http_core_module parsing and the map directive's regex matching are reachable from ordinary request traffic, which is what makes an 8.1 in a reverse proxy worth patching quickly even without exploitation evidence.

HPE's AOS-Switch trio is the opposite case: two authentication bypasses and an unauthenticated buffer overflow, all 9.8, all in the management interface of a switching platform. The score is a function of what the device is, not of what attackers are doing with it today. Those switches are usually reachable only from a management VLAN, which is a real mitigation until someone bridges it.

Email and security appliances

CVEProductCVSSExploitation status
CVE-2026-76519Cisco Secure Email Gateway, arbitrary file write9.8KEV, added 2026-10-14; active attacks
CVE-2026-104286Fortinet FortiMail, path traversal9.8KEV, added 2026-10-01

Both of these are gateways that sit in front of mail flow and hold credentials for everything behind them. Cisco's advisory is paired with a warning about active attacks, and the vulnerability class matters: an arbitrary file write on a device that terminates untrusted content is a webshell primitive with a short path to the appliance's configuration store.

FortiMail's entry is a path traversal in the HTTP/HTTPS interface, fixed in 8.0.2, 7.6.7, 7.4.9 and 7.2.10. It was added to KEV on the day the CVE published, which is worth noting: publication date and exploitation date are often the same day, and sometimes the exploitation comes first.

Enterprise applications

CVEProductCVSSExploitation status
CVE-2026-21589Atlassian Data Center stack, arbitrary file access9.3KEV, added 2026-10-15
CVE-2026-89111SAP Cloud SDK for Python, OAuth2 SSRF10.0No public exploitation reported
CVE-2026-89107SAP S/4HANA, code injection9.9No public exploitation reported
CVE-2026-89110SAP NetWeaver Visual Composer, access control9.9No public exploitation reported
CVE-2026-89108SAP MII, missing authorization9.1No public exploitation reported
CVE-2026-63688Dell Container Storage Modules10.0No public exploitation reported
CVE-2026-63692Dell Container Storage Modules10.0No public exploitation reported

The Atlassian entry is the one to read carefully. CVE-2026-21589 is an arbitrary file access bug across Bitbucket, Confluence, Jira Service Management, Jira Software, Bamboo, Crowd, Crucible and Fisheye Data Center. It does not allow enumeration: the attacker must already know the exact file name and path. It is in KEV anyway, which tells you that knowing the path is not much of an obstacle when the paths are /WEB-INF/web.xml or a configuration file with a fixed name.

SAP's four entries are a reminder that CVSS 10.0 on an SDK is not the same as CVSS 10.0 on an internet-facing appliance. The OAuth2 SSRF in the Cloud SDK for Python is a 10.0 because it can leak credentials that grant broad cloud access, but exploiting it requires an application built on that SDK to process attacker-influenced URLs. The S/4HANA and NetWeaver entries are typically authenticated or require a foothold.

The Dell pair — two separate CVSS 10.0 flaws in the same Container Storage Modules release — is worth flagging for Kubernetes operators. CSI drivers run with privileges that let them mount and provision volumes across a cluster, so a bug in that layer is a cluster-scoped problem, not a pod-scoped one.

Windows

CVEProductCVSSExploitation status
CVE-2026-83869Windows DNS Server RCE9.8Not exploited, per Microsoft
CVE-2026-96934Windows DHCP Server RCE9.8Not exploited, per Microsoft

Microsoft's own exploitation assessment is "No" for both. That is a meaningful data point and not a reason to defer: DNS and DHCP servers are the two roles that every network depends on and almost nobody watches, and both bugs are pre-authentication remote code execution in a service that parses attacker-supplied packets. A DHCP server is reachable by anything on the broadcast domain, including a compromised laptop.

What the table actually says

Five of the 33 are in the CISA KEV catalog as of version 2026.10.21. Twenty-three carry a CVSS base score of 9.1 or higher, which is why the list reads like a crisis: severity is a property of the bug, not of the campaign. Two more — the PHP pair — have vendor-independent confirmation of in-the-wild exploitation from AWS and watchTowr but were not in the catalog on the day it was pulled; the catalog lags disclosure by design and will likely catch up. One more, Cisco Secure Email Gateway, has an active-attacks warning attached to its KEV entry.

That leaves 25 vulnerabilities with no public exploitation reporting. For most of them, that means what it always means: nobody has looked, or nobody has published. Absence of reporting is not absence of exploitation, and a CVSS 10.0 does not become a 6 because a vendor's advisory says "not exploited". It does mean the correct response is proportionate: patch on a schedule driven by exposure and reachability, not by a headline.

The useful reframing is this. The php2shell pair is not notable because it is one of 33 critical bugs from October. It is notable because it is one of a very small number where someone has published telemetry showing exploitation before the advisory, and because the exploitation requires no application bug, no authentication, and no unusual configuration. Everything else on the list needs a precondition. php2shell needed a request.

Two practical rules follow for anyone triaging a list like this:

  1. Sort by reachability, not by score. A 9.8 on a management interface behind a jump host is a different risk from an 8.1 in the request path of every connection.
  2. Treat KEV as a floor, not a ceiling. The catalog is a list of what someone has already reported. The October PHP entries show how much exploitation can happen before the reporting catches up.

For the record, the full set covered here: CVE-2026-97229, CVE-2026-110264, CVE-2026-63688, CVE-2026-63692, CVE-2026-89107, CVE-2026-89108, CVE-2026-89110, CVE-2026-89111, CVE-2026-83869, CVE-2026-96934, CVE-2026-104286, CVE-2026-76519, CVE-2026-76742, CVE-2026-76743, CVE-2026-76744, CVE-2026-88771, CVE-2026-88772, CVE-2026-88773, CVE-2026-88775, CVE-2026-88776, CVE-2026-88777, CVE-2026-88778, CVE-2026-21589, CVE-2026-99999, CVE-2026-98283, CVE-2026-15176, CVE-2026-93479, CVE-2026-97205, CVE-2026-109618, CVE-2026-109619, CVE-2026-19445, CVE-2026-111497 and CVE-2026-111943.