Description
JSONata is a JSON query and transformation language. Prior to 1.8.8 and 2.2.1, the src/jsonata.js environment.lookup function used a bypassable hasOwnProperty check. Crafted expressions could use $hasOwnProperty, $spread, $string, prototype access, and $constructor to reach the object prototype and invoke process.getBuiltinModule with child_process, executing arbitrary code with the privileges of the host process. This issue is fixed in versions 1.8.8 and 2.2.1.
References6
- github.com/jsonata-js/jsonata/commit/59e25144fc3b7125f6befd71b8…
- github.com/jsonata-js/jsonata/pull/799
- github.com/jsonata-js/jsonata/releases/tag/v1.8.8
- github.com/jsonata-js/jsonata/releases/tag/v2.2.1
- github.com/jsonata-js/jsonata/security/advisories/GHSA-2943-5xf…
- github.com/jsonata-js/jsonata/security/advisories/GHSA-2943-5xf…
Metrics
- CVSS 4.0
-
9.3
CRITICAL
Score source: CNA
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - EPSS — exploit probability
- 1% percentile: 47 · as of 9 November 2026
- CWE
- CWE-94
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.