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
| CVE | Product | CVSS | Exploitation status |
|---|---|---|---|
| CVE-2026-109618 | PHP core, OOM corruption | 9.2 | Exploited in the wild (AWS, watchTowr); not in KEV |
| CVE-2026-109619 | PHP core, stale global state | 9.2 | Exploited in the wild (AWS, watchTowr); not in KEV |
| CVE-2026-97229 | GitLab CE/EE, regex RCE | 10.0 | No public exploitation reported |
| CVE-2026-110264 | GitLab CE/EE, regex integer overflow | 10.0 | No public exploitation reported |
| CVE-2026-111497 | Node.js Brotli decoder OOB write | High | No public exploitation reported |
| CVE-2026-111943 | Go crypto/x509 trust change | n/a | Not a memory-safety issue |
| CVE-2026-19445 | CPython SSLContext UAF | 9.2 | No 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
| CVE | Product | CVSS | Exploitation status |
|---|---|---|---|
| CVE-2026-88771 | Citrix NetScaler ADC/Gateway, input validation RCE | 9.5 | KEV, added 2026-09-27 |
| CVE-2026-88772 | Citrix NetScaler, memory overflow RCE/DoS | 9.5 | KEV, added 2026-09-27 |
| CVE-2026-88773 | Citrix NetScaler, HTTP request smuggling | 9.3 | No public exploitation reported |
| CVE-2026-88775 | Citrix NetScaler, memory overflow | 8.8 | No public exploitation reported |
| CVE-2026-88776 | Citrix NetScaler, memory overflow | 8.8 | No public exploitation reported |
| CVE-2026-88777 | Citrix NetScaler, memory overflow | 8.8 | No public exploitation reported |
| CVE-2026-88778 | Citrix NetScaler, TCP ISN prediction | 8.8 | No public exploitation reported |
| CVE-2026-15176 | F5 NGINX ngx_http_core_module | 8.1 | Not exploited, per F5 |
| CVE-2026-93479 | F5 NGINX map directive and regex matching | 8.1 | Not exploited, per F5 |
| CVE-2026-97205 | F5 NGINX ngx_http_core_module | 8.1 | Not exploited, per F5 |
| CVE-2026-76742 | HPE AOS-Switch, auth bypass | 9.8 | No public exploitation reported |
| CVE-2026-76743 | HPE AOS-Switch, auth bypass | 9.8 | No public exploitation reported |
| CVE-2026-76744 | HPE AOS-Switch, unauthenticated buffer overflow RCE | 9.8 | No public exploitation reported |
| CVE-2026-99999 | Linux kernel, IPv4 checksum handling | 9.3 | No public exploitation reported |
| CVE-2026-98283 | Linux KVM PPC64, use-after-free | 8.8 | No 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
| CVE | Product | CVSS | Exploitation status |
|---|---|---|---|
| CVE-2026-76519 | Cisco Secure Email Gateway, arbitrary file write | 9.8 | KEV, added 2026-10-14; active attacks |
| CVE-2026-104286 | Fortinet FortiMail, path traversal | 9.8 | KEV, 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
| CVE | Product | CVSS | Exploitation status |
|---|---|---|---|
| CVE-2026-21589 | Atlassian Data Center stack, arbitrary file access | 9.3 | KEV, added 2026-10-15 |
| CVE-2026-89111 | SAP Cloud SDK for Python, OAuth2 SSRF | 10.0 | No public exploitation reported |
| CVE-2026-89107 | SAP S/4HANA, code injection | 9.9 | No public exploitation reported |
| CVE-2026-89110 | SAP NetWeaver Visual Composer, access control | 9.9 | No public exploitation reported |
| CVE-2026-89108 | SAP MII, missing authorization | 9.1 | No public exploitation reported |
| CVE-2026-63688 | Dell Container Storage Modules | 10.0 | No public exploitation reported |
| CVE-2026-63692 | Dell Container Storage Modules | 10.0 | No 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
| CVE | Product | CVSS | Exploitation status |
|---|---|---|---|
| CVE-2026-83869 | Windows DNS Server RCE | 9.8 | Not exploited, per Microsoft |
| CVE-2026-96934 | Windows DHCP Server RCE | 9.8 | Not 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:
- 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.
- 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.