Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted jsonata expression with __proto__ binding key
-
DeliveryReach createFrame in src/jsonata.js
-
ExploitBypass hasOwnProperty guard via known technique
-
ExecutionInject arbitrary property into Object.prototype
-
PersistCorrupt runtime-wide object inheritance
-
ImpactExploit 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
1DescriptionCVE.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- 1 npm packages depend on jsonata (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 2.0.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Arbitrary code execution in the JSONata JavaScript library (npm 'jsonata') before 1.8.8 and 2.2.1 lets an attacker who c
Arbitrary code execution in JSONata (npm 'jsonata') versions up to 1.8.7 and 2.0.0-2.1.x allows an attacker who controls
Arbitrary code execution in the JSONata JSON query/transformation library (npm 'jsonata') lets an attacker who controls
JSONata is a JSON query and transformation language. Rated critical severity (CVSS 9.8), this vulnerability is remotely
EUVD-2026-36682
GHSA-663r-x48j-fg8p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB