{"id":"CVE-2026-12866","aliases":["CLSA-2026-1792241023","EUVD-2026-38415","GHSA-q9v2-7m5w-4693","ROOT-APP-NPM-CVE-2026-12866"],"status":"published","title":"expr-eval vulnerable to Code Execution","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","severity":{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-08","score":0.00866,"percentile":0.58938,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-94"],"published":"2026-06-23T05:00:00Z","modified":"2026-10-17T19:01:10Z","fixes":[{"ecosystem":"TuxCare:npm","package":"expr-eval","fixed_in":["2.0.2-tuxcare.4"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"expr-eval","fixed_in":["2.0.2-aikido.4"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/expr-eval","fixed_in":["2.0.2-root.io.4"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.0.2"}]}]},{"source":"ghsa","ecosystem":"Maven","package":"org.webjars.npm:expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.0.2"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.2-tuxcare.0"},{"fixed":"2.0.2-tuxcare.4"}]}],"versions":["2.0.2","2.0.2-tuxcare.1","2.0.2-tuxcare.2","2.0.2-tuxcare.3"]},{"source":"osv","ecosystem":"npm","package":"expr-eval","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"2.0.2"}]}]},{"source":"osv","ecosystem":"Maven","package":"org.webjars.npm:expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.0.2"}]}],"versions":["2.0.2"]},{"source":"osv","ecosystem":"Root:npm","package":"expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.2-aikido.4"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/expr-eval","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.2-root.io.4"}]}]}],"products":[{"vendor":"silentmatt","product":"expr-eval"}],"references":[{"url":"https://security.snyk.io/vuln/SNYK-JS-EXPREVAL-15054690","tags":["exploit","web"]},{"url":"https://security.snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-17662018","tags":["web"]},{"url":"https://github.com/silentmatt/expr-eval/blob/master/src/expression.js%23L55"},{"url":"https://github.com/silentmatt/expr-eval/issues/292","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-12866","tags":["advisory"]},{"url":"https://github.com/silentmatt/expr-eval/blob/master/src/expression.js#L55","tags":["web"]},{"url":"https://github.com/advisories/GHSA-q9v2-7m5w-4693"},{"url":"https://github.com/silentmatt/expr-eval","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-12866","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","status":"published","published":"2026-06-23T05:00:00.763Z","modified":"2026-08-14T15:25:14.399Z","cvss":[{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna"}],"cwes":["CWE-94","CWE-94"],"updated_at":"2026-11-02T14:19:48.461833Z"}],"euvd":[{"id":"EUVD-2026-38415","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","status":"published","published":"2026-06-23T05:00:00Z","modified":"2026-08-14T15:25:14Z","cvss":[{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"updated_at":"2026-11-02T18:01:54.910263Z"}],"ghsa":[{"id":"GHSA-q9v2-7m5w-4693","title":"expr-eval vulnerable to Code Execution","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","status":"published","published":"2026-06-23T06:30:41Z","modified":"2026-09-22T14:40:56Z","cvss":[{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:41:19.455935Z"}],"nvd":[{"id":"CVE-2026-12866","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","status":"published","published":"2026-06-23T05:17:03.38Z","modified":"2026-07-07T19:16:51.12Z","cvss":[{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"critical","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:12:25.288279Z"}],"osv":[{"id":"GHSA-q9v2-7m5w-4693","title":"expr-eval vulnerable to Code Execution","description":"All versions of the package expr-eval are vulnerable to Code Execution via the toJSFunction() API. An attacker can execute arbitrary JavaScript by supplying crafted expressions that are compiled into native code using new Function(). Because user-controlled expressions are transformed directly into executable JavaScript, attackers can escape the intended expression sandbox and run arbitrary code within the application's context.","status":"published","published":"2026-06-23T06:30:41Z","modified":"2026-09-22T14:45:10.513483389Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"},{"version":"4.0","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T15:46:54.40888Z"},{"id":"CLSA-2026-1792241023","title":"TuxCare security update for expr-eval (1 CVE)","description":"TuxCare rebuilt expr-eval to address 1 CVE. Fixed in 2.0.2-tuxcare.4.","status":"published","published":"2026-10-17T12:43:43Z","modified":"2026-10-17T19:01:10.600793504Z","updated_at":"2026-11-02T15:43:52.011757Z"},{"id":"ROOT-APP-NPM-CVE-2026-12866","title":"CVE-2026-12866 in expr-eval - Patched by Root","description":"Root has patched CVE-2026-12866 in the expr-eval package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-10-05T08:05:47Z","modified":"2026-10-05T09:15:04.365996144Z","updated_at":"2026-11-02T15:53:27.362922Z"}]}}
