CVE-2024-27307: JSONata prototype pollution via transform operator

CVE-2024-27307 · Severity: low · CVSS 3.1 · Published 2024-03-04

JSONata is a JavaScript query and transformation language used to extract and manipulate data from JSON. A flaw in versions 1.4.0–1.8.6 and 2.0.0–2.0.3 allows malicious expressions to override critical properties on the Object prototype, potentially leading to denial of service, remote code execution, or application crashes in systems that evaluate untrusted JSONata code.

Technologies: JSONata. Vendors: JSONata.

Quick answers

Is CVE-2024-27307 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2024-27307 being exploited in the wild.
How severe is CVE-2024-27307?
Low severity, with a CVSS score of 3.1, published 4 March 2024.
Which products and versions are affected?
JSONata >=1.4.0, <1.8.7; >=2.0.0, <2.0.4.
Is there a fix for CVE-2024-27307?
A patch was published on 2024-03-04: Fix released in versions 1.8.7 and 2.0.4 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2024-27307 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2024-27307?
Check whether you run JSONata at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

This is a prototype pollution vulnerability in JSONata's transform operator. The vulnerable code fails to prevent the transform operator from modifying Object.prototype and Object.constructor properties via the $ (match) and ~ (update) operators. An attacker can craft a JSONata expression that pollutes the Object prototype, affecting all objects created after the pollution occurs. This requires the application to evaluate user-supplied JSONata expressions. The fix, implemented in versions 1.8.7 and 2.0.4, adds validation to detect and reject attempts to modify JavaScript object prototypes by checking if a match target is a prototype or Object.constructor instance.

Affected products

  • JSONata JSONata >=1.4.0, <1.8.7; >=2.0.0, <2.0.4

Identifiers

  • CVE-2024-27307
  • GHSA-fqg8-vfv7-8fj8

Timeline

  • 2024-03-04: disclosed: Advisory published
  • 2024-03-04: patched: Fix released in versions 1.8.7 and 2.0.4

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.