CVE-2026-77415: JSONata vulnerable to Arbitrary Code Execution via crafted JSONata expressions
Before JSONata 2.2.1 and 1.8.8 it was possible to execute arbitrary code with
crafted expressions, due to:
- overwriting
$cloneallowing mutation of objects via transforms (seeevaluateTransformExpression) - it being possible to destruct jsonata functions/lambdas (e.g.
$merge.*) - applyProcedure
using
proc.arguments.forEachand notArray.prototype.forEach
Which could be chained to execute arbitrary code.
This was fixed with:
- https://github.com/jsonata-js/jsonata/pull/799 (https://github.com/jsonata-js/jsonata/pull/799/changes#diff-de23c1b6e199d0e59406a284aae5fa7be63fcbbff706829913dba73dcdeb061cL1673-R1673)
- https://github.com/jsonata-js/jsonata/pull/800
- https://github.com/jsonata-js/jsonata/pull/802
Which are included in the 2.2.1 release. Fixes were then back-ported to the 1.8.8 release.
References
- github.com/advisories/GHSA-66mm-25pp-rfff
- github.com/jsonata-js/jsonata/commit/47c0e58542202c705726663166dbee5fcae47d06
- github.com/jsonata-js/jsonata/commit/4b217d514376e30cba278941298d7ba97c4a6c6e
- github.com/jsonata-js/jsonata/commit/59e25144fc3b7125f6befd71b8a6e14e1fa610d2
- github.com/jsonata-js/jsonata/commit/f09df8416eab8ff44926fc6527c80fb8701de159
- github.com/jsonata-js/jsonata/commit/f174348c7fa30f271b63ddedf0767e814004bc4d
- github.com/jsonata-js/jsonata/pull/799
- github.com/jsonata-js/jsonata/pull/800
- github.com/jsonata-js/jsonata/pull/802
- 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-66mm-25pp-rfff
- nvd.nist.gov/vuln/detail/CVE-2026-77415
Code Behaviors & Features
Detect and mitigate CVE-2026-77415 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →