CVE-2026-105481
Medium · 6.5CVSS
6.5
EPSS
0.3%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A programming mistake in Node.js can cause web requests to receive and act on answers that were never meant for them, potentially exposing or corrupting information.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The Node.js HTTP Agent reuses keep-alive sockets without ensuring the guard that destroys idle sockets on unexpected data has run; when the event loop is busy with synchronous work an unsolicited response can already be buffered, the guard is bypassed, and the stale data is parsed as the response to a subsequent request.
Why it matters to the business
Applications built on affected Node.js versions may process incorrect or attacker-controlled responses, leading to data disclosure, logic errors, or failed operations; the incomplete fix of a prior issue and recent publication increase urgency for organizations relying on Node.js HTTP clients.
How an attack unfolds
An attacker sends an unsolicited HTTP response to a keep-alive connection; if the target Node.js process is busy and the socket is handed to a new request before the I/O-poll guard executes, the attacker-supplied data is accepted as the legitimate reply.
How to fix it
Upgrade Node.js 26.x, 24.x, and 22.x installations to the latest releases that contain the complete fix for this connection-reuse issue; disable keep-alive where feasible until patches are applied.
How to confirm the fix worked
Verify the installed Node.js version is newer than the affected ranges; exercise HTTP keep-alive workloads under load that triggers synchronous event-loop pauses and confirm unsolicited data no longer produces valid responses.
Typical attack path
- Locate Node.js applications using the built-in HTTP/HTTPS Agent with keep-alive enabled
- Establish or predict a keep-alive socket and inject an unsolicited response while the event loop is occupied with synchronous work
- Trigger a new request on the same socket so the buffered data is parsed as its response
- Observe or leverage the resulting incorrect response handling
How to detect it
Inspect application and Node.js process logs for unexpected response bodies on keep-alive connections, mismatched request/response timing, or errors during socket reuse; correlate with event-loop latency metrics.
What your security team should do
- Prioritize patching all Node.js 22.x/24.x/26.x deployments within the next maintenance window
- Review and minimize use of keep-alive sockets in internal HTTP clients
- Monitor upstream Node.js release notes for the exact fixed versions
- Add runtime checks or wrappers that reject responses arriving before a request was sent
The record
A flaw in Node.js HTTP Agent connection reuse can cause a client to accept as valid a response that was sent before the client has sent the request. This is an incomplete fix of CVE-2026-48931. The guard that destroys idle keep-alive sockets when unexpected data arrives only runs when the event loop polls for I/O. If an unsolicited response has already reached the socket but has not been read yet when the socket is handed to a new request, for example because the event loop was busy with synchronous work, the guard is removed without seeing it and the data is parsed as the response to the new request. This vulnerability affects Node.js **26.x**, **24.x**, and **22.x**.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-116250 In server mode pgAdmin 4 validates a path a user gives for a file in their storage… CWE-367
- CVE-2026-116240 In server mode pgAdmin 4 validates a path into the user's storage directory with… CWE-367
- CVE-2026-115683 A race condition in Epiphany allows a malicious website to bypass the TLS/SSL certificate… CWE-367
- CVE-2026-119552 Uptime Kuma through 2.5.8 contains a race condition in the Socket.IO first-run setup… CWE-367
- CVE-2026-92374 A time-of-check time-of-use (TOCTOU) race condition combined with improper symbolic link… CWE-367
- CVE-2026-117603 Electrum before 4.7.2 contains a spending limit bypass vulnerability in the Nostr Wallet… CWE-367
- CVE-2026-75524 OpenReception's appointment booking software provides an end-to-end encrypted appointment… CWE-367
- CVE-2026-57114 PraisonAI is a multi-agent teams system. CWE-367