Skip to main content

jsonata CVE-2026-12208

| EUVDEUVD-2026-36682 MEDIUM
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-06-15 VulDB GHSA-663r-x48j-fg8p
5.5
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Send crafted jsonata expression with __proto__ binding key
  2. Delivery
    Reach createFrame in src/jsonata.js
  3. Exploit
    Bypass hasOwnProperty guard via known technique
  4. Execution
    Inject arbitrary property into Object.prototype
  5. Persist
    Corrupt runtime-wide object inheritance
  6. Impact
    Exploit polluted prototype in downstream authorization or logic checks

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application passes attacker-controlled or attacker-influenced content as keys within jsonata expressions or variable binding frames evaluated by createFrame in src/jsonata.js. Applications that evaluate only static, developer-authored jsonata expressions with no user-supplied key names are not directly exploitable. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms that no authentication, non-default configuration, or user interaction is required when attacker-controlled input reaches the vulnerable function - making this a zero-prerequisite network attack against any exposed jsonata evaluation endpoint. Exploitation is bounded by the application's data flow: the attacker must control or influence expression variable names or binding keys, not merely the data values being queried. The named hasOwnProperty bypass technique in the POC means that applications relying on the library's own guard - rather than external input sanitization - remain vulnerable even if they believe prototype-pollution defenses are present.

Impact

The CVSS 4.0 score of 6.9 (Medium) captures only the direct, base-level integrity impact (VI:L) and understates realistic risk. Prototype pollution vulnerabilities are structurally underscored by CVSS because downstream effects - authentication bypass, arbitrary code execution in chained logic, or denial of service in dependent code paths - are application-dependent and not reflected in base metrics. The zero-prerequisite CVSS profile (AV:N/AC:L/PR:N/UI:N) means any application endpoint that passes attacker-influenced data into jsonata expression evaluation is directly exploitable with no friction. The publicly available POC (E:P, GitHub: OriginSecurityX/jsonata-hasownproperty-bypass) significantly compresses the time-to-exploit and makes this accessible to non-specialist attackers. KEV status is not confirmed - CISA active exploitation is not established - so this should be characterized as opportunistic rather than confirmed targeted exploitation. EPSS data was not provided; however, the combination of zero-privilege network exploitability and a working public PoC warrants treating this as higher priority than the 6.9 base score suggests, particularly in applications that expose jsonata evaluation to untrusted input. The absence of any vendor patch response is the most significant risk multiplier: there is no timeline for remediation.

Exploit ScenarioDerived

An attacker targeting a web application that evaluates user-supplied jsonata expressions sends a crafted query containing a payload that uses __proto__ or a similar prototype-chain key as a variable binding name within the expression, reaching the vulnerable createFrame function. Because the POC (https://github.com/OriginSecurityX/jsonata-hasownproperty-bypass) demonstrates a bypass of the hasOwnProperty guard, standard naive prototype-pollution defenses in the library are insufficient to block the injection. Once Object.prototype is polluted with attacker-chosen properties, downstream application logic that trusts inherited object properties - such as authorization checks, configuration lookups, or template rendering - may be subverted to escalate privileges, bypass authentication, or execute attacker-controlled code paths.

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

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

Alert me

AnalysisAIv1 – Jun 15, 2026

Prototype pollution in jsonata-js (all versions up to 2.2.0) allows remote unauthenticated attackers to inject arbitrary properties into JavaScript's Object.prototype via the createFrame function in src/jsonata.js. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) with exploitation status E:P confirms this is network-exploitable with zero prerequisites, and a public proof-of-concept has been published on GitHub demonstrating a hasOwnProperty guard bypass. No patch exists - the vendor failed to respond to coordinated disclosure - leaving all users of jsonata ≤ 2.2.0 indefinitely exposed.

RemediationAI

No vendor-released patch has been identified at time of analysis - the vendor did not respond to coordinated disclosure and no fixed version of jsonata has been confirmed. Organizations should implement the following specific compensating controls while awaiting a patch: First, audit all application code paths where user-controlled data influences keys or variable names passed into jsonata expressions evaluated by createFrame, and sanitize input by rejecting or stripping keys matching __proto__, constructor, and prototype at application ingress boundaries. Second, apply Object.freeze(Object.prototype) at Node.js process startup to prevent runtime prototype modification; note this may break libraries that legitimately set properties on Object.prototype, so thorough regression testing is required. Third, if jsonata evaluation of user-supplied content is architecturally necessary, isolate it in a dedicated child process or worker thread with a frozen prototype environment so that any successful pollution is contained to a sandboxed scope. Fourth, pin the jsonata package and monitor the jsonata-js GitHub repository and VulDB entry (https://vuldb.com/vuln/370850) for a patched release. The exploit POC is publicly available at https://github.com/OriginSecurityX/jsonata-hasownproperty-bypass and can be used to validate whether any applied mitigations are effective.

Affected VersionsENISA

jsonata 2.0
jsonata 2.1
jsonata 2.2.0

Affected Packages

npm jsonata fix: 1.8.8, 2.2.1

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

jsonata is a lightweight query and transformation language for JSON data, widely embedded in Node.js applications and integration platforms. The vulnerable component is the Function Binding Frame System, specifically the createFrame function in src/jsonata.js, which manages variable and function scoping during expression evaluation. CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes) arises when user-controlled keys - such as __proto__, constructor, or prototype - are used to set properties on plain JavaScript objects without sanitizing these reserved names first. The proof-of-concept is named 'jsonata-hasownproperty-bypass', indicating that the library's existing guard uses hasOwnProperty in a way that can be circumvented, defeating a common first-line prototype-pollution defense. Once Object.prototype is polluted, every object in the Node.js runtime inherits the injected properties, which can cascade into authentication bypasses, privilege escalations, or code injection in application logic that trusts prototype-inherited values. CPE cpe:2.3:a:jsonata-js:jsonata:*:*:*:*:*:*:*:* covers the full affected range.

Know when Jsonata 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 (VulDB) PRIMARY 5.5 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 5.3 MEDIUM

Network-reachable with no authentication or user interaction; integrity impact limited to low as direct prototype pollution does not guarantee full system write without application-layer escalation.

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
Jun 15, 2026 - 03:22 NVD
6.9 (MEDIUM) 5.5 (MEDIUM)

DescriptionCVE.org

A weakness has been identified in jsonata-js jsonata up to 2.2.0. The affected element is the function createFrame of the file src/jsonata.js of the component Function Binding Frame System. This manipulation causes improperly controlled modification of object prototype attributes. It is possible to initiate the attack remotely. The exploit has been made available to the public and could be used for attacks. The vendor was contacted early about this disclosure but did not respond in any way.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 npm packages depend on jsonata (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 2.0.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor CIRCL GitHub VulDB

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 Yes
EPSS 0.3%
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

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