Skip to main content

stream-json EUVDEUVD-2026-91056

| CVE-2026-104182 MEDIUM
Inefficient Algorithmic Complexity (CWE-407)
2026-10-01 GitHub_M GHSA-hqr4-qq8f-hg3x
6.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain ability to supply local JSONC input
  2. Delivery
    Craft large comment split across many small chunks
  3. Exploit
    Feed to stream-json JSONC parser/verifier
  4. Execution
    Trigger quadratic comment-terminator rescan
  5. Impact
    Stall Node.js event loop (denial of service)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

Exploitation requires that the application use stream-json's JSONC code path specifically - the parser at stream-json/jsonc/parser.js or verifier at stream-json/jsonc/verifier.js (the plain JSON parser is NOT affected because it discards consumed data) - on a version prior to 3.6.0. The attacker must be able to supply JSONC input as many small chunks containing one large valid block (/* */) or line (//) comment, so a chunked/streaming input source is a prerequisite. Limiting factors: the vector is LOCAL (AV:L), and the library documents JSONC input as locally-owned or user-controlled configuration rather than internet-facing data, so an attacker needs a local path to feed malicious JSONC; there is no confidentiality or integrity impact, only availability (event-loop stall).

Impact

This is a genuine but low-urgency availability issue, not a high-impact priority. The CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 6.2) is driven entirely by a High availability impact with no confidentiality or integrity effect - consistent with CWE-407 (Inefficient Algorithmic Complexity): a quadratic comment-scan that can stall the Node.js event loop (DoS). Critically, the attack vector is LOCAL (AV:L), and the maintainer explicitly scopes JSONC input as locally-owned/user-controlled configuration, not internet-facing data; the README even warns against feeding untrusted JSON/JSONC to the library. No EPSS score, KEV listing, or POC was provided in the input, so there is no exploitation-probability or active-exploitation signal to weigh. There is a tension worth flagging: PR:N (no privileges) combined with AV:L means an attacker still needs a local delivery path (the ability to supply the malicious JSONC file/stream) but no authentication once they do - verify the realistic threat model against your deployment, since the vendor's stated design intent (trusted input only) sharply narrows real-world exploitability. Net: a real correctness/DoS bug worth patching, but low operational risk absent a path for untrusted JSONC to reach the parser.

Exploit ScenarioDerived

An application uses stream-json's JSONC parser to process a configuration or data file whose contents an attacker can influence (e.g., a locally-supplied config in a multi-tenant or CI context). The attacker crafts one large, valid block or line comment and feeds it across many small input chunks; the parser repeatedly rescans the comment terminator from the opening slash while retaining the buffer, producing quadratic CPU work that stalls the Node.js event loop and denies service. No public exploit code was identified in the provided data, and the low-complexity (AC:L) but local (AV:L) vector means the attacker must first control the JSONC input path.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 01, 2026

Quadratic CPU consumption in the JSONC parser and verifier of the stream-json npm package (stream-json/jsonc/parser.js and jsonc/verifier.js) before version 3.6.0 lets an unauthenticated local attacker stall a Node.js process by supplying one large valid block or line comment split across many small input chunks. Only the JSONC code path is affected; the plain JSON parser discards consumed string and number data and is explicitly not vulnerable. Impact is availability-only (CVSS 3.1 6.2, AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - event-loop stall, no confidentiality or integrity loss), and the maintainer frames the vector as local because documented JSONC input is locally owned or user-controlled configuration rather than internet-facing data. No public exploit code identified at time of analysis; a vendor patch is available in 3.6.0.

RemediationAI

Upgrade to stream-json 3.6.0 or later (npm install stream-json@3.6.0), which makes comment scanning linear by resuming across chunk boundaries instead of restarting from the opening slash; the vendor advisory is at https://github.com/uhop/stream-json/security/advisories/GHSA-hqr4-qq8f-hg3x, the fix commit is c0299dc168ce9455ef5ca5b6a0f6850ee7fa0468, and the release is at https://github.com/uhop/stream-json/releases/tag/3.6.0. If an immediate upgrade is not possible, stop feeding chunked JSONC from any source that is not strictly locally owned: if the data contains no comments, route it through the standard JSON parser (unaffected by this issue) or strip comments before parsing - this changes nothing else but requires a preprocessing step and rejects JSONC-only syntax such as trailing commas. Alternatively, buffer each JSONC document fully and hand the parser a single large chunk, which removes the mid-comment chunk boundary that triggers the quadratic rescan at the cost of losing the library's low-memory streaming benefit and capping feasible file size. Enforce a maximum comment length or overall document size limit in the calling application and run parsing inside a worker thread with a hard timeout so a stalled parser can be killed rather than freezing the main event loop, accepting the added complexity and thread overhead. Do not expose JSONC configuration uploads to unauthenticated remote users, since the assessed vector is local (AV:L) and the maintainer treats JSONC input as locally owned or user-controlled configuration; there is no vendor-released workaround other than the 3.6.0 upgrade.

Affected VersionsENISA

stream-json < 3.6.0

Affected Packages

npm stream-json fix: 3.6.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

stream-json is a micro-library of streaming components that tokenizes JSON/JSONC byte by byte with charCodeAt so that arbitrarily large documents can be processed with a minimal memory footprint. Its JSONC fork extends the base tokenizer with '//' and '/* */' comments and trailing-comma support (raw exports jsoncParser and jsoncVerifier). The root cause is CWE-407 (Inefficient Algorithmic Complexity): in pre-3.6.0 code, whenever a block or line comment straddles an input chunk boundary, the scanner restarted its comment-terminator search from the opening slash while still retaining the accumulated comment buffer, so each new chunk re-scanned the entire comment prefix - O(n) work per chunk and O(n²) work overall for a comment of length n delivered in n small chunks. The fix mirrors the existing string handling: comments now emit startComment / commentChunk / endComment (or a packed commentValue, with packComments defaulting to true in 3.6.0) and the comment scan resumes across chunks instead of rescanning, making comment processing linear in the comment length (GHSA-hqr4-qq8f-hg3x, commit c0299dc168ce9455ef5ca5b6a0f6850ee7fa0468). The CPE cpe:2.3:a:uhop:stream-json:*:*:*:*:*:*:*:* with a wildcard version reflects that every release up to the 3.6.0 fix boundary is in scope, and ENISA EUVD-2026-91056 records the affected range as stream-json < 3.6.0.

Know when Node.js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.2 MEDIUM

Local JSONC input path (AV:L) with no auth or interaction once input is supplied (PR:N/UI:N); low-complexity quadratic DoS yields availability-only impact (A:H, C:N/I:N).

3.1 AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 6.2 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 01, 2026 - 21:17 EUVD

DescriptionCVE.org

stream-json is a micro-library of stream components for processing JSON and JSONC with a minimal memory footprint. Prior to 3.6.0, the JSONC parser at stream-json/jsonc/parser.js and verifier at stream-json/jsonc/verifier.js restart comment-terminator scanning from the opening slash whenever a block or line comment spans an input chunk, while retaining the accumulated comment buffer. Delivering a large valid comment across many small chunks therefore causes quadratic CPU work and can stall the Node.js event loop. The maintainer characterizes the attack vector as local because the documented JSONC input is locally owned or user-controlled configuration, rather than input intended for the open internet. This JSONC-only scope does not include the plain JSON parser, which advances through and discards consumed string and number data. This issue is fixed in version 3.6.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 29 npm packages depend on stream-json (26 direct, 3 indirect)

Ecosystem-wide dependent count for version 3.6.0.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
moderately popular Node.js npm streaming library, but only JSONC code path affected
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +31
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy