UpdatesSecurity

October 2026 CVEs: Node.js and PHP Emergency Patches

On October 21, 2026, Node.js shipped 11 CVE fixes and PHP shipped two critical RCE fixes the same day. What changed, and the patch order to follow.

Start reading
Official Node.js page with the 'Wednesday, October 21, 2026 Security Releases' banner listing fix versions v22.23.4, v24.22.1, and v26.12.1
Public image · source: Node.js Blog
Published
Written by
Agentive Labs
Reading time
9min read

On October 21, 2026, two runtimes you may be running in production shipped security patches on the same day. Node.js fixed 11 CVEs across its three supported release lines, and PHP announced fixes for two unauthenticated remote code execution vulnerabilities. CISA named the PHP issue “php2shell” and added both CVEs to its Known Exploited Vulnerabilities Catalog on October 26, which means real-world exploitation has already happened. This summary is assembled from each vendor’s official pages, which we checked on November 3, 2026.

What happened on October 21, 2026?

Two major security releases landed together: Node.js v22.23.4, v24.22.1, and v26.12.1, plus PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35. On the Node.js side, the official announcement lists 11 CVEs: four high severity, four medium, and three low, alongside dependency updates for c-ares, OpenSSL, SQLite, Undici, and ca-cert. The ca-cert update matters beyond Node itself: the compromised eMudhra intermediate certificate was pulled, and the TLS trust chain was refreshed on every supported line. On the PHP side, the official news archive labels these “Critical Security Releases” for two CVEs, with an advance notice published one day earlier, on October 20.

The 'Wednesday, October 21, 2026 Security Releases' banner on the official Node.js site, with the list of fix versions for the 22.x, 24.x, and 26.x release lines
Screenshot 01. The official Node.js announcement, published October 21, 2026: three fix versions for the 22.x, 24.x, and 26.x release lines. Official source: Node.js Blog · Open original image.

Why does php2shell count as the most urgent?

Because both bugs are unauthenticated RCEs scored CVSS v4.0 9.2, and both are already on the actively-exploited list. CISA explains that the pair, nicknamed “php2shell”, affects every PHP installation serving web requests: Apache with mod_php is considered highest risk, followed by PHP-FPM, php-cgi, FrankenPHP, and LiteSpeed.

The mechanisms differ but both end in code execution. In CVE-2026-109618, out-of-memory handling interrupts PHP while internal request data is only partially initialized; request cleanup then treats that incomplete data as valid. CVE-2026-109619 is sneakier: request-owned internal state can survive after its backing memory has been freed, and a later request handled by the same worker uses that stale state before normal initialization resets it.

The official PHP changelog shows both GHSAs fixed in 8.5.12, 8.4.27, 8.3.36, and 8.2.35, with limited source backports for PHP 7.4, 8.0, and 8.1. The PHP team wrote in its announcement that there are no complete mitigations and updating is the only safe choice. PHP 8.2 reaches end of life on December 31, 2026, so servers still on 8.2 should not stop at this version either.

The official PHP 8 ChangeLog showing the Version 8.5.12 entry dated October 22, 2026, fixing GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp, below an 'Updated PHP Windows builds for Brotli security fix' banner
Screenshot 02. The official PHP changelog: the 8.5.12 entry carries both GHSAs from the php2shell wave. The banner above it also announces new Windows builds bundling Brotli 1.2.1, a thread we cover below. Official source: php.net · Open original image.

What does CISA ask of teams operating PHP?

Five steps, none of which wait on another vendor. First, inventory every system running PHP; CISA notes PHP is often bundled inside other software and may not be directly visible. Second, patch immediately, prioritizing internet-facing systems, to 8.5.12, 8.4.27, 8.3.36, or 8.2.35. Third, for systems that cannot be patched yet or still run unsupported PHP 8.1 or earlier, CISA explicitly recommends taking them offline until they can be patched. Fourth, a web application firewall may provide interim protection, not a replacement. Fifth, watch for suspicious activity, especially PHP worker processes launching shells or downloading tools; CISA also published SIGMA detection rules for this.

The official CISA alert 'Critical Vulnerabilities in PHP Require Immediate Patching', last revised October 26, 2026, with its Purpose and Actions to take sections for CVE-2026-109618 and CVE-2026-109619
Screenshot 03. The CISA alert, last revised October 26, 2026: the addition of both CVEs to the Known Exploited Vulnerabilities Catalog is stated right at the top. Official source: CISA · Open original image.

How serious are the 11 CVEs in Node.js?

The four high-severity ones deserve individual attention, because their patterns repeat across Node.js security releases. CVE-2026-111497 is an out-of-bounds write in the Brotli decoder through node:zlib: an 8-byte buffer overflow from an invalid block switch, with possible crash, memory disclosure, or RCE. CVE-2026-105482 makes dns.resolve*() truncate hostnames at NUL bytes, so attacker.example\0.trusted.example passes an allowlist that checks the full name. The other two are TLS bypasses: tls.checkServerIdentity() can be fooled by fullwidth digits such as 127.0.0.1 (24.x and 26.x only), or by leading-zero IPv4 literals such as 0127.0.0.1 that WHATWG URL parsing and the OS resolver normalize differently.

Equally decision-relevant for architecture: two of the eleven are continuations of fixes the project flagged as incomplete. CVE-2026-105482 completes an unfinished fix of CVE-2026-48930, and CVE-2026-105481 extends CVE-2026-48931: the HTTP keep-alive Agent still accepted responses sent before any request. There is also CVE-2026-106074, which matters if you use --build-snapshot or single executable applications: entropy caches for crypto.randomUUID() and randomInt() get saved into the snapshot, so up to 127 UUIDs can repeat across processes. Three low-severity CVEs round out the list, including two permission-model fixes that only touch 26.x. EOL lines are affected too; the announcement recommends upgrading per the release schedule.

If your Node.js application is built and deployed through a pipeline like the ones we build in our product engineering service, updating the runtime is a one-line version bump, then an image rebuild and deploy. What is slower is finding the hidden Node.js: internal CLI tools, stale containers, or vendor appliances. The inventory pattern is the same one CISA asks for on the PHP side.

Did Node.js and PHP really catch the same hole?

Yes, one CVE surfaced in two ecosystems: Brotli. The same Brotli decoder flaw, CVE-2026-111497, appears in Node.js through node:zlib and in PHP through Windows builds that bundle the Brotli library for the cURL extension. php.net shipped new Windows builds on October 26 bundling Brotli 1.2.1, and the “Updated PHP Windows builds for Brotli security fix” banner sits on its site. For infrastructure teams this is a useful reminder: shared C dependencies mean shared security fate, and a per-runtime CVE list never covers the system libraries carried along.

What about AI tooling security in the same month?

Busy, with numbers too large to ignore. Three signals from October 2026:

First, the Pydantic AI advisory wave on October 8. Most relevant for agents with web access: CVE-2026-107290, an event loop blocked by quadratic title extraction in the local web_fetch tool, plus resource-consumption and SSRF issues in the same tool. A prompt leak through OpenTelemetry instrumentation on failed retries was fixed across the 1.107.x and 2.27.x through 2.44.0 ranges. The pattern matches what we covered in the guard architecture for MCP: tools that accept external input need size limits, host allowlists, and sanitization before they touch observability infrastructure.

Second, the stream of Langflow advisories through September 2026: critical RCE via the MCP Stdio transport (September 10), cross-project file disclosure through MCP resource handlers (September 22), and two cross-user access fixes at the end of the month. If your team runs an agent flow builder inside your internal stack, its advisory page belongs on your subscription list.

Third, Anthropic’s coordinated vulnerability disclosure dashboard, last updated October 2, 2026: 6,157 vulnerabilities disclosed across 591 open source projects, 516 of them known to be patched, with 219 CVE records and 365 GitHub Security Advisories issued. Anthropic runs the discovery with Claude models and names human triage as the rate-limiting step. The number points at what comes next: finding vulnerabilities is no longer the bottleneck; handling them is the queue.

Anthropic's coordinated vulnerability disclosure dashboard, last updated October 2, 2026, stating 6,157 vulnerabilities across 591 open source projects with 516 of them patched
Screenshot 04. Anthropic's CVD dashboard as of October 2, 2026: 6,157 vulnerabilities across 591 open source projects, 516 patched, 219 CVEs and 365 GHSAs issued. Official source: Anthropic · Open original image.

What patch order makes sense this week?

The following is our suggested editorial checklist, not an official guide from any vendor; adjust it to your actual exposure:

  1. Internet-facing PHP systems first, today, following the KEV status of the two php2shell CVEs. If you cannot patch yet, CISA recommends taking them offline.
  2. The Node.js release lines you run, with image rebuilds rather than restarts alone: runtime-level holes like the Brotli decoder and the TLS bypasses only close when images are actually rebuilt.
  3. Pipelines using --build-snapshot or SEA in Node.js need a snapshot rebuild after upgrading, because the entropy cache is baked into the old artifact.
  4. Inventory internal AI tooling: pydantic-ai below 2.44.0 (or 1.107.6 on the 1.x line) and long-exposed Langflow installs on public networks are two combinations you should not leave standing.
  5. CISA’s SIGMA detection rules over PHP worker logs, running before the week ends if any PHP system is still unpatched.
flowchart TD
  A["Internet-facing system?"] -->|"PHP"| B["Patch php2shell today: 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35"]
  A -->|"Node.js"| C["Upgrade to v22.23.4 / v24.22.1 / v26.12.1"]
  B --> D["Cannot patch yet? CISA: take it offline"]
  C --> E["Rebuild images, snapshots, and SEA artifacts"]
  B --> F["Inventory hidden PHP: appliances and containers"]
  E --> G["Inventory AI tooling: pydantic-ai, Langflow, MCP clients"]
  D --> G
  F --> G

Automation workflows that connect these systems, including agents with tool access, are day-to-day work for our AI agents service; the inventory and patching belong in a maintenance contract you can ask for from day one.

What does this article not cover?

Exploit internals, hosting pricing, and per-provider patch timelines are out of scope; version figures on official pages may change after our check date. We also skip third-party roundups, so every claim above traces to a vendor page or CISA alert we link. Sources were checked on November 3, 2026. If you want to assess your production stack’s exposure to waves like this one, talk to us.

Official sources & references

Sources checked:

  1. Node.js Blog: Wednesday, October 21, 2026 Security Releaseshttps://nodejs.org/en/blog/vulnerability/october-2026-security-releases
  2. php.net: PHP 8 ChangeLoghttps://www.php.net/ChangeLog-8.php
  3. php.net: News Archive 2026 (Critical Security Releases, October 21)https://www.php.net/archive/2026.php
  4. GHSA-w8hw-w9fx-j79w: RCE via out-of-memory handling (CVE-2026-109618)https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
  5. GHSA-6wmf-4rv5-p3rp: RCE via stale global state (CVE-2026-109619)https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
  6. CISA Alert: Critical Vulnerabilities in PHP Require Immediate Patchinghttps://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching
  7. Pydantic AI: Security Advisorieshttps://github.com/pydantic/pydantic-ai/security/advisories
  8. GHSA-fpf4-vwcp-v4hp: web_fetch event loop block (CVE-2026-107290)https://github.com/advisories/GHSA-fpf4-vwcp-v4hp
  9. Langflow: Security Advisorieshttps://github.com/langflow-ai/langflow/security/advisories
  10. Anthropic: Coordinated Vulnerability Disclosure Dashboardhttps://red.anthropic.com/2026/cvd

Images belong to the source publishers and illustrate their interfaces. Features and interfaces may change after the check date.

Continue reading

02 / notes
The official DeepSeek Harness page with the 'Ready to use. Right now.' headline, a Preview label, and the desktop app view explaining the Cordis plugin architecture

AI Agents

DeepSeek Super-Agent: A Proactive Coding Agent

DeepSeek open-sourced its super-agent prototype on October 31, 2026: a proactive coding agent on Harness. How it works, how it compares, and the limits.

Read the note
Building an AI Agent Eval Harness: Testing Pipelines

AI Evaluation

Building an AI Agent Eval Harness: Testing Pipelines

Prompt changes silently break downstream agent tool calls. A guide to building deterministic eval harnesses, trajectory metrics, and CI regression testing.

Read the note

From reading to building

Have a more specific question?

Tell us about your context, workflow, and constraints. We start with the right questions.

Discuss a projectSee services