CVE-2022-36010: React editable json tree React Editable Json Tree Vulnerable Vulnerability
CRITICALCVE-2022-36010 is a CRITICAL (CVSS 10.0) react editable json tree vulnerable vulnerability (CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')) affecting React editable json tree libraries in the npm ecosystem. The issue involves react editable json tree vulnerable to arbitrary code execution via function parsing. Remediation is available by upgrading affected packages to version 2.2.2.
CVE-2022-36010 at a Glance
Security Impact
CVSS: 10.0
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).
How to Fix CVE-2022-36010
To remediate this vulnerability, upgrade all affected React editable json tree dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install react-editable-json-tree@2.2.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls react-editable-json-tree
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2022-36010, inspect your project dependencies using npm:
npm ls react-editable-json-tree
Analyze the terminal output to locate any version of React editable json tree in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.2.2), your application is affected.
Note: The npm ls react-editable-json-tree command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection'), where the product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before using the input in a dynamic evaluation call (e.g. "eval"). In React editable json tree, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2022-36010 Affected React editable json tree Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
react-editable-json-tree
|
npm |
< 2.2.2
|
2.2.2
|
References
Frequently Asked Questions
What is CVE-2022-36010?
Which React editable json tree versions are affected?
What version fixes CVE-2022-36010?
Is react-editable-json-tree affected?
What is the CVSS score of CVE-2022-36010?
What CWE is associated with CVE-2022-36010?
How can I check npm dependencies for CVE-2022-36010?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-j3rv-w43q-f9x2",
"modified" : "2022-08-18T19:15:28Z",
"published" : "2022-08-18T19:15:28Z",
"aliases" : [ "CVE-2022-36010" ],
"summary" : "React Editable Json Tree vulnerable to arbitrary code execution via function parsing",
"details" : "### Impact\nOur library allows strings to be parsed as functions and stored as a specialized component, [`JsonFunctionValue`](https://github.com/oxyno-zeta/react-editable-json-tree/blob/09a0ca97835b0834ad054563e2fddc6f22bc5d8c/src/components/JsonFunctionValue.js). To do this, Javascript's [`eval`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) function was used to execute strings that begin with \"function\" as Javascript. This was an oversight that unfortunately allows arbitrary code to be executed if it exists as a value within the JSON structure being displayed. Given that this component may often be used to display data from arbitrary, untrusted sources, this is extremely dangerous.\n\nOne important note is that users who have defined a custom [`onSubmitValueParser`](https://github.com/oxyno-zeta/react-editable-json-tree/tree/09a0ca97835b0834ad054563e2fddc6f22bc5d8c#onsubmitvalueparser) callback prop on the [`JsonTree`](https://github.com/oxyno-zeta/react-editable-json-tree/blob/09a0ca97835b0834ad054563e2fddc6f22bc5d8c/src/JsonTree.js) component should be ***unaffected***. This vulnerability exists in the default `onSubmitValueParser` prop which calls [`parse`](https://github.com/oxyno-zeta/react-editable-json-tree/blob/master/src/utils/parse.js#L30).\n\n### Patches\nWe have decided on a two-pronged approach to patching this vulnerability:\n\n1. Create a patch update that adds a workaround **which is not enabled by default** to preserve backwards-compatibility\n2. On the next major update, **we will enable this workaround by default**\n\nThe workaround we have decided on is adding a prop to `JsonTree` called `allowFunctionEvaluation`. This prop will be set to `true` in v2.2.2, so you can upgrade without fear of losing backwards-compatibility.\n\nWe have also implemented additional security measures as we know many people may not read the details of this vulnerability, and we want to do the best we can to keep you protected. In v2.2.2, we switched from using `eval` to using [`Function`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) to construct anonymous functions. This is better than `eval` for the following reasons:\n\n- Arbitrary code should not be able to execute immediately, since the `Function` constructor explicitly *only creates* anonymous functions\n- Functions are created without local closures, so they only have access to the global scope\n\nThis change has brought a *slight* potential for breaking backwards-compatibility if users for some reason were relying on side-effects of our usage of `eval`, but that is beyond intended behavior, so we have decided to go ahead with this change and consider it a non-breaking change.\n\n### Workarounds\nAs mentioned above, there are a few scenarios you must consider:\n\nIf you use:\n- **Version `<2.2.2`**, you must upgrade as soon as possible.\n- **Version `^2.2.2`**, you must explicitly set `JsonTree`'s `allowFunctionEvaluation` prop to `false` to fully mitigate this vulnerability.\n- **Version `>=3.0.0`**, `allowFunctionEvaluation` is already set to `false` by default, so no further steps are necessary.\n\n### References\nNone.\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in the [GitHub repo](https://github.com/oxyno-zeta/react-editable-json-tree)\n",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "react-editable-json-tree"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "2.2.2"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/oxyno-zeta/react-editable-json-tree/security/advisories/GHSA-j3rv-w43q-f9x2"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2022-36010"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/oxyno-zeta/react-editable-json-tree"
}, {
"type" : "WEB",
"url" : "https://github.com/oxyno-zeta/react-editable-json-tree/releases/tag/2.2.2"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-95" ],
"severity" : "CRITICAL",
"github_reviewed" : true,
"github_reviewed_at" : "2022-08-18T19:15:28Z",
"nvd_published_at" : "2022-08-15T19:15:00Z"
}
}