Blog
About

Security operationsAnalysis

Six days from patch to exploited: PHP, Node.js, Oracle and the order to fix them

Every critical fix shipped between 20 and 29 October 2026 across PHP, Node.js, Oracle, Java, Fortinet and EDK II firmware, counted from the advisories and put in patch order.

Illustration: The TechBag Journal

Between 20 and 29 October 2026 the three runtimes under most enterprise web estates, PHP, Node.js and Java, all shipped critical security fixes within two days of each other. Oracle shipped its quarterly update in the same window, a firewall vendor shipped fixes before announcing what they were, and a firmware bug turned PXE booting into a risk. A team with one change window this month has to choose an order. This piece sets out what each fix is, how much of it is exposed, and the order we would patch in.

01Ten days, three runtimes, and the vendors said why it was fast

The calendar is unusual on its own. PHP and Node.js released fixes on 21 October; Oracle’s Critical Patch Update came the day before, and its out-of-cycle Java alert the day after.61013 Speed is the second unusual thing. Amazon’s MadPot honeypot logged a PHP2Shell attempt on 17 October, four days before the vulnerabilities were public.3 CISA added both PHP CVEs to its Known Exploited Vulnerabilities catalogue on 26 October and the Brotli bug behind Node2Shell on 27 October. It set a federal due date of 29 October for PHP and 10 November for Brotli.12

Fix to ‘known exploited’ took five days for PHP and six for Brotli

Disclosures, fixes and exploitation signals across the late-October patch cluster, 17 to 29 October 2026 (UTC dates)

17 Oct 2026First PHP2Shell probe
20 Oct 2026Oracle CPU; PHP leak
21 Oct 2026PHP, Node.js, Java fixes
22 Oct 2026Fortinet, EDK II
26 Oct 2026PHP2Shell in KEV
27 Oct 2026Brotli in KEV
28 Oct 2026Hetzner: do not reboot
29 Oct 2026GitLab, Cisco ASA in KEV
Table view
DateEventDetail
17 Oct 2026First PHP2Shell probeAmazon MadPot honeypot, from a commercial anonymiser, four days before disclosure
20 Oct 2026Oracle CPU; PHP leak1,295 Oracle patches; PHP2Shell details leak ahead of the planned 22 October release
21 Oct 2026PHP, Node.js, Java fixesPHP 8.2.35 to 8.5.12; Node.js 22, 24 and 26 releases; Oracle Java alert CVE-2026-91403
22 Oct 2026Fortinet, EDK IIFortinet hardening release, CVEs held to 10 November; EDK II PXE advisory, CVSS v4 9.5
26 Oct 2026PHP2Shell in KEVBoth CVEs added; federal due date 29 October
27 Oct 2026Brotli in KEVCVE-2026-111497 added; Defused decoys see Oracle EBS exploit probes the same morning
28 Oct 2026Hetzner: do not rebootPXE-booting hosts told to avoid reboots and block inbound ICMP
29 Oct 2026GitLab, Cisco ASA in KEVTwo more exploited bugs, each with a three-day federal deadline

Source: Amazon via The Hacker News; Oracle CPU advisory; PHP, Node.js and Fortinet releases; TianoCore advisory; CISA KEV feed; BleepingComputer; Hetzner status page · as of 30 October 2026

Read the discovery credits and AI turns up on both sides. Researchers from Calif, OpenAI and Wiz found PHP2Shell.3 OpenAI’s Codex Security reported the Brotli bug to Node.js.6 An Anthropic and a Google researcher found the EDK II flaw.15 Fortinet attributes its fixes to its “frontier AI-assisted security testing program”.14 On the attacking side, Cyfirma reports a suspected North Korean operator group using a local AI model to rank public PHP2Shell exploits before testing them by hand.5

02PHP2Shell, in brief: the interpreter itself, on almost every visible host

CVE-2026-109618 and CVE-2026-109619 sit in PHP’s memory management and error handling, code that nearly every request touches. Both allow unauthenticated remote code execution and both are scored 9.2.3 The fixed builds are 8.5.12, 8.4.27, 8.3.36 and 8.2.35. PHP 8.1 and older get no new release.4 A reload that keeps old workers alive leaves the stale state in place, so restart every PHP worker after updating.5 Firewalls are not a safe assumption either. Palo Alto confirmed that PAN-OS and Panorama are affected, through PHP in the management web interface and XML API.21

99.998%

of 2,608,039 internet-facing PHP hosts that VulnCheck judged vulnerable or likely vulnerable on 21 October

VulnCheck counts each host once and calls every figure a floor. Hosts with no visible version are counted as likely vulnerable.4

More than eight in ten exposed PHP hosts run an end-of-life branch or hide their version

Internet-facing PHP hosts by branch, share of 2,608,039, VulnCheck scan of 21 October 2026

2.61MPHP hosts
  • No version shown43.4% 43%
  • PHP 3.x to 7.3: no fix at all27% 27%
  • PHP 7.4 to 8.1: source backports only15% 15%
  • PHP 8.2 to 8.5: fix released14.6% 15%
Table view
Value (%)Share
No version shown43.443%
PHP 3.x to 7.3: no fix at all2727%
PHP 7.4 to 8.1: source backports only1515%
PHP 8.2 to 8.5: fix released14.615%

Source: VulnCheck, PHP2Shell vulnerabilities (27%, 15%, 43.4%); supported-branch share computed by TechBag as the remainder · as of 26 October 2026 · VulnCheck gives 700,000+ hosts (27%) on 3.x to 7.3 and just under 400,000 (15%) on 7.4 to 8.1; its rounded counts overlap slightly, so the shares are used

The exploitation and disclosure story, including the embargo Chainguard broke and what the mod_php worst case means, is in our separate piece, the PHP2Shell deep dive. For ordering purposes, one fact is enough: PHP2Shell is the only item this month with a three-day federal deadline and a 2.6-million-host footprint.14

03Node2Shell: a bug you can reach without ever calling it

The Node.js release of 21 October fixed ten CVEs across the 22, 24 and 26 lines: four High, three Medium and three Low. Four of the ten are incomplete fixes of, or a regression after, earlier CVEs.6 The one that matters is CVE-2026-111497, an out-of-bounds write in the Brotli decoder. Node.js says it can lead to “a crash, disclosure of process memory, or remote code execution” and rates it High. Google, which assigned the CVE, scores it 9.2 under CVSS v4.67

Reachability is what makes it a priority. Most Node.js code never imports a Brotli library, and it does not have to. According to Akamai, the built-in fetch() decompresses Brotli responses automatically, and Express 5 with body-parser 2 decompresses request bodies sent as Content-Encoding: br by default. Akamai says its telemetry shows affected Node.js versions on 61% of networks, without saying how it measured that.8

One malformed compressed body reaches the decoder through defaults, and the same decoder ships in other runtimes

How CVE-2026-111497 is reached and where else it lives, as published 21 to 27 October 2026

  1. 01

    A compressed body arrives

    Any client sends Content-Encoding: br to an Express 5 app, or a server answers a fetch() call with Brotli.

  2. 02

    Decompression runs by default

    body-parser’s inflate option is on unless you turn it off; fetch() has no switch at all.

  3. 03

    The decoder writes past its buffer

    An invalid block switch is treated as needing more input, so the decoder keeps appending to an eight-byte buffer.

  4. 04

    Same bug, other runtimes

    Bun, .NET, Python’s brotli and brotlicffi, Envoy and Istio, brotli4j and Red Hat packages are all named.

Source: Node.js security release; Akamai; Rapid7; Microsoft .NET advisory; Bun v1.4.4 release · as of 27 October 2026

So the inventory question is wider than “which Node.js versions do we run”. Microsoft published .NET 8.0.33, 9.0.22 and 10.0.14 for the same CVE on 25 October.9 Bun shipped 1.4.4 on 22 October.22 Rapid7 lists the upstream Brotli ranges as 1.0.3 before 1.0.10, 1.1.0 before 1.1.1 and 1.2.0 before 1.2.1, which is the string to search a software bill of materials for.7 Node.js offers no workaround. If you cannot upgrade an Express service today, setting inflate: false makes it reject compressed bodies with HTTP 415.8 The same release updated Node’s bundled root certificates for the eMudhra intermediate CA compromise, which we cover in eMudhra’s private key was the number 4.6

04Oracle: 1,295 patches, one EBS bug being probed, and the Java fix that came a day late

Oracle’s October Critical Patch Update, published 20 October, contains 1,295 new security patches.10 Volume is not the useful measure. Severity is, and severity is concentrated in a few product families.

Fusion Middleware and Communications hold 70 of the 112 critical-rated patches; Java SE holds none

Oracle Critical Patch Update, October 2026: new security patches by product family, split at CVSS 3.1 base score 9.0

  • CVSS 9.0 or higher
  • Below 9.0
Fusion Middleware40166206 patches
E-Business Suite190194 patches
Database products112126 patches
Siebel CRM119122 patches
Communications3080110 patches
PeopleSoft107109 patches
JD Edwards97102 patches
MySQL9498 patches
Java SE5555 patches
All other families163173 patches
Table view
CVSS 9.0 or higherBelow 9.0
Fusion Middleware40166
E-Business Suite4190
Database products14112
Siebel CRM3119
Communications3080
PeopleSoft2107
JD Edwards597
MySQL494
Java SE055
All other families10163

Source: Oracle Critical Patch Update Advisory, October 2026, risk matrices; TechBag count · as of 26 October 2026 · Database products include Essbase, REST Data Services, GoldenGate and APEX, as Oracle groups them. Counts are risk-matrix rows; 112 rows cover 95 unique CVEs

The EBS bug drawing attention is CVE-2026-101767, an unauthenticated SQL injection in the Thin Client Framework servlet at /OA_HTML/AppsTCFServer. It chains to operating-system commands, affects versions 12.2.3 to 12.2.15, and the default EBS URL firewall allows the endpoint. Horizon3 reported it to Oracle on 24 July.11 On 27 October Defused’s EBS decoys recorded “exploratory exploits” against it, and Shadowserver tracks more than 670 internet-exposed EBS instances, most of them in the United States.12 It was not in the KEV catalogue as of 29 October.1 If you cannot patch this week, Horizon3’s interim step is to remove that servlet from the URL firewall allowlist.11

Java is where the calendar misleads. The CPU’s Java SE section has 55 patches, 49 of them exploitable over the network without credentials, but none critical: the top score is 7.5.10 The serious Java fix arrived on 21 October as Security Alert CVE-2026-91403, a 9.1 in JSSE. That update distrusts the eMudhra intermediate CA certificates. It lists Java SE 8u511, 11.0.33, 17.0.21, 21.0.13, 25.0.5 and 27.0.1, and GraalVM, as affected.13 Those versions are newer than the ones the CPU lists as affected (8u503, 11.0.32.1 and so on), so a team that patched Java on 20 October still needs the next update.10

05The rest of the week, and the order to patch in

Fortinet released FortiOS 8.0.2, 7.6.8, 7.4.13 and 7.2.14 on 22 October, with FortiManager, FortiAnalyzer, FortiMail and FortiAuthenticator alongside. CVE IDs and scores follow on 10 November, Fortinet’s next Patch Tuesday.14 For 19 days you have a version table and the vendor’s word that it includes “critical and high-severity fixes”. That is enough to act on.

EDK II, the open-source reference UEFI code that much commercial firmware is built on, has CVE-2026-97631 (CVSS v4 9.5). While a machine PXE-boots, an oversized ICMP error message overflows a 504-byte field and can run attacker code “before Secure Boot or measured boot has verified or measured any OS component”.15 The fix was merged on 15 October, a week before the 22 October advisory, and the pull request named the CVE. On 28 October Hetzner told customers to avoid rebooting PXE-booting hosts and to block inbound ICMP during reboots.16

jackson-databind, the JSON library inside most enterprise Java, published CVE-2026-110879 on 20 October: a 9.8 bypass of its polymorphic type validator. It is an incomplete fix of an earlier CVE and is fixed in 2.18.12, 2.21.8, 2.22.4, 3.1.8 and 3.2.4. It applies where class-name polymorphism is in use: configured default typing in 2.x or 3.x, or annotation-based class-name type IDs, which a default 3.x mapper accepts. An application that does neither is not on this path.17 And LiteLLM’s poisoned 1.107.0 release on 21 October belongs on the same list. We covered it in Two CERT-In advisories in six days.

Patch by evidence of exploitation and exposure, not by CVSS score or vendor size

TechBag's recommended patch order for the 20 to 29 October 2026 cluster

Step 1 of 6

1. Internet-facing PHP

In KEV, three-day federal deadline. Include appliances with a PHP management UI. Restart every worker after updating.

Source: CISA KEV feed; PHP, Node.js, Fortinet, Oracle, TianoCore and FasterXML advisories; TechBag analysis · as of 30 October 2026

Sources

  1. CISA, Known Exploited Vulnerabilities catalogue, JSON feed (date added and due date per CVE) — catalogue 2026.10.29, fetched 30 October 2026
  2. CISA, CISA Adds Two Known Exploited Vulnerabilities to Catalog (CVE-2026-109618, CVE-2026-109619) — 26 October 2026
  3. The Hacker News, Someone Tried to Exploit PHP2Shell 4 Days Before the Vulnerabilities Were Publicly Disclosed (Amazon, ELLIO, discoverers) — 22 October 2026
  4. VulnCheck, PHP2Shell Vulnerabilities: CVE-2026-109618 and CVE-2026-109619 — 21 October 2026, updated 26 October
  5. Security Affairs, PHP2Shell: suspected North Korean campaign targets 216 vulnerable PHP hosts (Cyfirma) — 26 October 2026
  6. Node.js, Wednesday, October 21, 2026 Security Releases — 21 October 2026
  7. Rapid7, CVE-2026-111497: Critical out-of-bounds write in the Node.js Brotli decoder — 26 October 2026, updated 27 October
  8. Akamai Security Intelligence Group, Inside Node2Shell: a closer look at CVE-2026-111497 — 26 October 2026
  9. Microsoft, Security Advisory CVE-2026-111497: .NET Brotli Decoder Out-of-bounds Write (GHSA-p3jp-9v83-76w9) — 25 October 2026
  10. Oracle, Critical Patch Update Advisory, October 2026 (risk matrices) — 20 October 2026, Rev 2 26 October
  11. Horizon3.ai, CVE-2026-101767: Oracle EBS SQL Injection RCE — 20 October 2026
  12. BleepingComputer, Hackers now scanning systems for recently-patched Oracle flaw (Defused, Shadowserver) — 28 October 2026
  13. Oracle, Security Alert Advisory CVE-2026-91403 — 21 October 2026
  14. Fortinet CISO Collective, Carl Windsor, Fortinet Releases Security Hardening Release for Multiple Products — 21 October 2026
  15. TianoCore EDK II, GHSA-99cj-7hg9-mp4m: Pre-boot RCE in EDK II PXE driver; fix in pull request 13302 (merged 15 October) — 22 October 2026
  16. Hetzner status, Warning CVE-2026-97631: critical security vulnerability in the EDK II UEFI firmware component — 28 October 2026, 17:08 UTC
  17. FasterXML, jackson-databind GHSA-m8xf-2cr7-77ph (CVE-2026-110879) — 20 October 2026
  18. CERT-In, CIAD-2026-0052: Advisory to MSME, Remote code execution vulnerabilities in PHP (PHP2Shell) — 22 October 2026
  19. CERT-In, public advisory listing 2026 (CIAD-2026-0050 to 0055) — fetched 30 October 2026
  20. CERT-In, Directions under section 70B(6) of the IT Act (six-hour reporting) — 28 April 2022
  21. Help Net Security, What the PHP2Shell vulnerability means for Fortinet, Cisco and Palo Alto customers — 22 October 2026
  22. Bun, release v1.4.4 — 22 October 2026

Related on TechBag: the vulnerability management guide covers the scanners that find these runtimes; the RMM and patch guide covers the tools that push the fixes; the Fortinet hub maps the products the hardening release touches.

Disclosure. TechBag is a software reseller: it earns a margin when a reader buys through it, including from vendors named here. The analysis is TechBag’s own; no vendor paid for or saw this piece before publication. Facts are labelled reported, TechBag count or our view.