Description
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**.
Published: 2026-10-23
Score: 6.5 Medium
EPSS: n/a
KEV: No
Impact: Stale response misinterpretation potentially enabling data injection
Action: Immediate Patch
AI Analysis

Impact

A flaw in Node.js HTTP Agent connection reuse logic allows a client to mistakenly interpret data that arrived on a socket before a request was issued as the response to that new request. The vulnerability stems from a guard that removes idle keep-alive sockets only when the event loop polls for I/O; if unsolicited data has already reached the socket and the event loop is busy with synchronous work, the guard is bypassed and the data is parsed as a legitimate response. The defect could enable an attacker to inject crafted responses into a client application, potentially leading to unauthorized code execution, malicious data processing, or other unintended behavior when the stale data is treated as legitimate. The weakness is classified under CWE-367, reflecting improper handling of unexpected input. Node.js distributed a fix in later releases; however, this incomplete patch is still present in versions 26.x, 24.x, and 22.x. The CVSS score of 6.5 indicates a moderate-to-high severity. While the EPSS score is currently unavailable, the vulnerability is not listed in CISA's KEV catalog, suggesting no widely known exploitation yet. Attackers could potentially exploit this by controlling the server that communicates with the vulnerable client, making the issue relevant to both client-side and server-side codebases, especially in high-traffic or synchronous environments.

Affected Systems

Node.js versions 26.x, 24.x, and 22.x. The affected vendor is the Node.js project.

Risk and Exploitability

The moderate CVSS score signals significant potential impact if the flaw is successfully used. An attacker with control over responses on a reused keep-alive connection could cause the Node.js client to process a previous response as new, leading to data injection or malicious code execution. The risk is heightened in scenarios where the event loop is busy with CPU-bound work, allowing unsolicited data to arrive unnoticed. Although no widespread exploits are documented (not in KEV) and EPSS is not available, the theoretical exploit path remains viable.

Generated by OpenCVE AI on October 23, 2026 at 17:23 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Node.js to a patched release that removes this flaw.
  • Avoid blocking synchronous operations while idle keep-alive sockets may be reused; ensure such periods are short or replaced with asynchronous handling.
  • Implement application-level validation to confirm that responses match the corresponding request protocols, mitigating misinterpretation.

Generated by OpenCVE AI on October 23, 2026 at 17:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 17:45:00 +0000

Type Values Removed Values Added
Title Node.js HTTP Agent Can Misinterpret Stale Response as New Request

Fri, 23 Oct 2026 16:30:00 +0000

Type Values Removed Values Added
Description 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**.
Weaknesses CWE-367
References
Metrics cvssV3_0

{'score': 6.5, 'vector': 'CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: hackerone

Published:

Updated: 2026-10-23T16:15:05.837Z

Reserved: 2026-10-05T15:00:00.729Z

Link: CVE-2026-105481

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-23T17:17:19.250

Modified: 2026-10-23T19:42:24.553

Link: CVE-2026-105481

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T17:30:17Z

Weaknesses
  • CWE-367

    Time-of-check Time-of-use (TOCTOU) Race Condition