{"id":"CVE-2024-28397","aliases":["EUVD-2024-2066","GHSA-h95x-26f3-88hr","MGASA-2024-0256","PYSEC-2026-1476","SUSE-SU-2024:2272-1","UBUNTU-CVE-2024-28397","openSUSE-SU-2024:14086-1","openSUSE-SU-2026:11322-1"],"status":"published","title":"js2py allows remote code execution","description":"An issue in the component js2py.disable_pyimport() of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","severity":{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.04815,"percentile":0.92034,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-94"],"published":"2024-06-20T00:00:00Z","modified":"2026-10-17T12:56:33Z","exploits":[{"source":"exploitdb","id":"EDB-52532","title":"Js2Py 0.74 -  RCE","type":"webapps","platform":"multiple","date":"2026-04-30","url":"https://www.exploit-db.com/exploits/52532"},{"source":"metasploit","id":"exploit/linux/http/pyload_js2py_cve_2024_39205","title":"Pyload RCE (CVE-2024-39205) with js2py sandbox escape (CVE-2024-28397)","type":"exploit","platform":"Linux,Unix","date":"2024-10-28","verified":true,"url":"https://www.rapid7.com/db/modules/exploit/linux/http/pyload_js2py_cve_2024_39205"},{"source":"nuclei","id":"CVE-2024-28397","title":"pyload-ng js2py - Remote Code Execution","type":"detection template","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2024/CVE-2024-28397.yaml"},{"source":"pocgithub","id":"0xDTC/js2py-Sandbox-Escape-CVE-2024-28397-RCE","title":"0xDTC/js2py-Sandbox-Escape-CVE-2024-28397-RCE","date":"2025-09-15","url":"https://github.com/0xDTC/js2py-Sandbox-Escape-CVE-2024-28397-RCE"},{"source":"pocgithub","id":"3z-p0wn/CVE-2024-28397-exploit","title":"3z-p0wn/CVE-2024-28397-exploit","date":"2026-01-11","url":"https://github.com/3z-p0wn/CVE-2024-28397-exploit"},{"source":"pocgithub","id":"CYBER-WARRIOR-SEC/CVE-2024-28397-js2py-Sandbox-Escape","title":"CYBER-WARRIOR-SEC/CVE-2024-28397-js2py-Sandbox-Escape","date":"2024-06-21","url":"https://github.com/CYBER-WARRIOR-SEC/CVE-2024-28397-js2py-Sandbox-Escape"},{"source":"pocgithub","id":"D3ltaFormation/CVE-2024-28397-Js2Py-RCE","title":"D3ltaFormation/CVE-2024-28397-Js2Py-RCE","date":"2025-09-17","url":"https://github.com/D3ltaFormation/CVE-2024-28397-Js2Py-RCE"},{"source":"pocgithub","id":"GhostOverflow/CVE-2024-28397-command-execution-poc","title":"GhostOverflow/CVE-2024-28397-command-execution-poc","date":"2025-08-17","url":"https://github.com/GhostOverflow/CVE-2024-28397-command-execution-poc"},{"source":"pocgithub","id":"L1337Xi/CVE-2024-28397-Exploit-Automation","title":"L1337Xi/CVE-2024-28397-Exploit-Automation","date":"2025-12-06","url":"https://github.com/L1337Xi/CVE-2024-28397-Exploit-Automation"},{"source":"pocgithub","id":"Marven11/CVE-2024-28397-js2py-Sandbox-Escape","title":"Marven11/CVE-2024-28397-js2py-Sandbox-Escape","date":"2024-06-19","url":"https://github.com/Marven11/CVE-2024-28397-js2py-Sandbox-Escape"},{"source":"pocgithub","id":"Naved124/CVE-2024-28397-js2py-Sandbox-Escape","title":"Naved124/CVE-2024-28397-js2py-Sandbox-Escape","date":"2025-08-28","url":"https://github.com/Naved124/CVE-2024-28397-js2py-Sandbox-Escape"},{"source":"pocgithub","id":"RianJuniorSf/exploit-js2py","title":"RianJuniorSf/exploit-js2py","date":"2025-08-18","url":"https://github.com/RianJuniorSf/exploit-js2py"},{"source":"pocgithub","id":"Udayveer17/Remote-Code-Execution-CVE-2024-28397-pyload-ng-js2py-","title":"Udayveer17/Remote-Code-Execution-CVE-2024-28397-pyload-ng-js2py-","date":"2025-09-06","url":"https://github.com/Udayveer17/Remote-Code-Execution-CVE-2024-28397-pyload-ng-js2py-"},{"source":"pocgithub","id":"harutomo-jp/CVE-2024-28397-RCE","title":"harutomo-jp/CVE-2024-28397-RCE","date":"2025-08-18","url":"https://github.com/harutomo-jp/CVE-2024-28397-RCE"},{"source":"pocgithub","id":"naclapor/CVE-2024-28397","title":"naclapor/CVE-2024-28397","date":"2025-09-09","url":"https://github.com/naclapor/CVE-2024-28397"},{"source":"pocgithub","id":"somisec/CVE-2024-28397-Reverse-Shell","title":"somisec/CVE-2024-28397-Reverse-Shell","date":"2025-10-12","url":"https://github.com/somisec/CVE-2024-28397-Reverse-Shell"},{"source":"pocgithub","id":"vitaciminIPI/CVE-2024-28397-RCE","title":"vitaciminIPI/CVE-2024-28397-RCE","date":"2025-09-17","url":"https://github.com/vitaciminIPI/CVE-2024-28397-RCE"},{"source":"pocgithub","id":"xeloxa/CVE-2024-28397-Js2Py-RCE-Exploit","title":"xeloxa/CVE-2024-28397-Js2Py-RCE-Exploit","date":"2026-02-03","url":"https://github.com/xeloxa/CVE-2024-28397-Js2Py-RCE-Exploit"},{"source":"pocgithub","id":"y0naldez/CVE-2024-28397-Js2Py-RCE","title":"y0naldez/CVE-2024-28397-Js2Py-RCE","date":"2026-05-12","url":"https://github.com/y0naldez/CVE-2024-28397-Js2Py-RCE"}],"fixes":[{"ecosystem":"Mageia:9","package":"python-js2py","fixed_in":["0.70-3.1.mga9"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.6","package":"python-Js2Py","fixed_in":["0.74-150400.9.6.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"python-Js2Py","fixed_in":["0.74-3.1","0.74-6.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"js2py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.74"}]}]},{"source":"osv","ecosystem":"PyPI","package":"js2py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.74"}]}],"versions":["0.1","0.2","0.21","0.22","0.23","0.25","0.26","0.27","0.28","0.29","0.30","0.31","0.32","0.33","0.35","0.36","0.37","0.39","0.40","0.41","0.42","0.43","0.44","0.47","0.48","0.49","0.50","0.51","0.52","0.53","0.54","0.55","0.56","0.57","0.58","0.59","0.60","0.61","0.62","0.63","0.66","0.67","0.68","0.69","0.70","0.71","0.72","0.74"]},{"source":"osv","ecosystem":"Mageia:9","package":"python-js2py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.70-3.1.mga9"}]}]},{"source":"osv","ecosystem":"PyPI","package":"js2py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.74"}]}],"versions":["0.1","0.2","0.21","0.22","0.23","0.25","0.26","0.27","0.28","0.29","0.30","0.31","0.32","0.33","0.35","0.36","0.37","0.39","0.40","0.41","0.42","0.43","0.44","0.47","0.48","0.49","0.50","0.51","0.52","0.53","0.54","0.55","0.56","0.57","0.58","0.59","0.60","0.61","0.62","0.63","0.66","0.67","0.68","0.69","0.70","0.71","0.72","0.74"]},{"source":"osv","ecosystem":"openSUSE:Leap 15.6","package":"python-Js2Py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.74-150400.9.6.1"}]}]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"python-cloudscraper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.2.69-1","1.2.69-2","1.2.71~git20230426.cbb3c0ea-1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"python-cloudscraper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.2.71~git20230426.cbb3c0ea-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"python-cloudscraper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.2.71~git20230426.cbb3c0ea-1build1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"python-cloudscraper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.2.71~git20230426.cbb3c0ea-1","1.2.71~git20230426.cbb3c0ea-1build1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"python-Js2Py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.74-3.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"python-Js2Py","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.74-6.1"}]}]}],"products":[{"vendor":"js2py","product":"js2py_disable_pyimport"}],"references":[{"url":"https://github.com/Marven11","tags":["x_transferred","web","report"]},{"url":"https://github.com/Marven11/CVE-2024-28397-js2py-Sandbox-Escape","tags":["x_transferred","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-28397","tags":["advisory"]},{"url":"https://github.com/PiotrDabkowski/Js2Py/pull/323","tags":["web"]},{"url":"https://github.com/advisories/GHSA-h95x-26f3-88hr","tags":["advisory"]},{"url":"https://github.com/PiotrDabkowski/Js2Py","tags":["package"]},{"url":"https://advisories.mageia.org/MGASA-2024-0256.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=33354","tags":["report"]},{"url":"https://lwn.net/Articles/980387/","tags":["web"]},{"url":"https://pypi.org/project/js2py","tags":["package"]},{"url":"https://www.suse.com/support/update/announcement/2024/suse-su-20242272-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1226660","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2024-28397","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2024-28397","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2024-28397","tags":["report"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2024-28397","description":"An issue in the component js2py.disable_pyimport() of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T00:00:00Z","modified":"2024-08-02T00:56:57.584Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"adp"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:34:18.597034Z"}],"euvd":[{"id":"EUVD-2024-2066","description":"An issue in the component js2py.disable_pyimport() of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T00:00:00Z","modified":"2024-08-02T00:56:57Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-03T03:50:26.752963Z"}],"ghsa":[{"id":"GHSA-h95x-26f3-88hr","title":"js2py allows remote code execution","description":"An issue in the component `js2py.disable_pyimport()` of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T18:34:08Z","modified":"2024-08-04T05:01:02Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"},{"version":"3.1","score":8.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:37:57.422393Z"}],"nvd":[{"id":"CVE-2024-28397","description":"An issue in the component js2py.disable_pyimport() of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T17:15:50.527Z","modified":"2026-06-17T07:21:24.123Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"secondary"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:10:07.173605Z"}],"osv":[{"id":"GHSA-h95x-26f3-88hr","title":"js2py allows remote code execution","description":"An issue in the component `js2py.disable_pyimport()` of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T18:34:08Z","modified":"2026-09-10T03:50:15.483446977Z","cvss":[{"version":"3.1","score":8.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"},{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T15:46:48.920784Z"},{"id":"PYSEC-2026-1476","title":"js2py allows remote code execution","description":"An issue in the component `js2py.disable_pyimport()` of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2026-07-07T14:34:35.127086Z","modified":"2026-07-07T17:46:46.023026391Z","cvss":[{"version":"3.1","score":8.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"},{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T15:52:55.06457Z"},{"id":"UBUNTU-CVE-2024-28397","description":"An issue in the component js2py.disable_pyimport() of js2py up to v0.74 allows attackers to execute arbitrary code via a crafted API call.","status":"published","published":"2024-06-20T17:15:00Z","modified":"2026-10-17T12:56:33.21616433Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-02T16:54:48.333535Z"},{"id":"MGASA-2024-0256","title":"Updated python-js2py packages fix security vulnerability","description":"CVE-2024-28397: Fixed a potential sandbox escape via untrusted\nJavaScript code\n","status":"published","published":"2024-07-05T16:28:37Z","modified":"2026-04-16T04:44:48.250066988Z","updated_at":"2026-11-02T15:49:42.684501Z"},{"id":"openSUSE-SU-2024:14086-1","title":"python310-Js2Py-0.74-3.1 on GA media","description":"These are all security issues fixed in the python310-Js2Py-0.74-3.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-07-01T00:00:00Z","modified":"2026-02-04T03:09:46.583009Z","updated_at":"2026-11-02T16:58:36.662953Z"},{"id":"openSUSE-SU-2026:11322-1","title":"python313-Js2Py-0.74-6.1 on GA media","description":"These are all security issues fixed in the python313-Js2Py-0.74-6.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-07-21T00:00:00Z","modified":"2026-07-22T09:30:07.450001348Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"SUSE-SU-2024:2272-1","title":"Security update for python-Js2Py","description":"This update for python-Js2Py fixes the following issues:\n\n- CVE-2024-28397: Fixed a potential sandbox escape via untrusted\n  JavaScript code (bsc#1226660).\n","status":"published","published":"2024-07-02T10:07:45Z","modified":"2026-02-04T02:27:25.256137Z","updated_at":"2026-11-02T15:53:55.136363Z"}]}}
