{"id":"CVE-2015-8857","aliases":["CLSA-2026-1773274555","CLSA-2026-1774225180","CLSA-2026-1774225182","CLSA-2026-1776904629","CLSA-2026-1776904632","DEBIAN-CVE-2015-8857","EUVD-2017-0154","GHSA-34r7-q49f-h37c","UBUNTU-CVE-2015-8857"],"status":"published","title":"Incorrect Handling of Non-Boolean Comparisons During Minification in uglify-js","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","severity":{"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":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.03559,"percentile":0.89409,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-1254","CWE-254","CWE-670"],"published":"2017-01-23T21:00:00Z","modified":"2026-10-15T09:47:27Z","fixes":[{"ecosystem":"npm","package":"uglify-js","fixed_in":["2.4.24"],"sources":["ghsa","osv"]},{"ecosystem":"RubyGems","package":"uglifier","fixed_in":["2.7.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:13","package":"uglifyjs","fixed_in":["2.7.4-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.4.24"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"uglifier","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.7.2"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.1.1-tuxcare.0"},{"fixed":"1.1.1-tuxcare.1"}]}],"versions":["1.1.1"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.3.5-tuxcare.0"},{"fixed":"1.3.5-tuxcare.1"}]}],"versions":["1.3.5"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.6-tuxcare.0"},{"fixed":"2.3.6-tuxcare.1"}]}],"versions":["2.3.6"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.8.29-tuxcare.0"},{"fixed":"2.8.29-tuxcare.1"}]}],"versions":["2.8.29"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"uglify-js","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.4.10-tuxcare.0"},{"fixed":"3.4.10-tuxcare.1"}]}],"versions":["3.4.10"],"bundled":2},{"source":"osv","ecosystem":"Debian:13","package":"uglifyjs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.7.4-1"}]}]},{"source":"osv","ecosystem":"npm","package":"uglify-js","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.4.24"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"uglifier","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.7.2"}]}],"versions":["0.1.0","0.1.1","0.2.0","0.3.0","0.4.0","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.1.0","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.0","2.0.0","2.0.1","2.1.0","2.1.1","2.1.2","2.2.0","2.2.1","2.3.0","2.3.1","2.3.2","2.3.3","2.4.0","2.5.0","2.5.1","2.5.3","2.6.0","2.6.1","2.7.0","2.7.1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"uglifyjs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.4.15-4","2.4.15-5"]}],"products":[{"vendor":"uglifyjs_project","product":"uglifyjs"}],"references":[{"url":"http://www.securityfocus.com/bid/96410","tags":["vdb-entry","x_refsource_BID","x_transferred","Third Party Advisory","VDB Entry","advisory"]},{"url":"https://nodesecurity.io/advisories/39","tags":["x_refsource_CONFIRM","x_transferred","Exploit","Patch","Vendor Advisory","advisory","evidence","fix","report"]},{"url":"http://www.openwall.com/lists/oss-security/2016/04/20/11","tags":["mailing-list","x_refsource_MLIST","x_transferred","Mailing List","Third Party Advisory","advisory","article","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2015-8857","tags":["advisory"]},{"url":"https://github.com/mishoo/UglifyJS2/issues/751","tags":["web"]},{"url":"https://zyan.scripts.mit.edu/blog/backdooring-js/"},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/uglifier/CVE-2015-8857.yml","tags":["web"]},{"url":"https://web.archive.org/web/20200227190830/http://www.securityfocus.com/bid/96410","tags":["web"]},{"url":"https://github.com/lautis/uglifier/commit/4677bfe38142937ff952f95605bcec4618892c3e","tags":["web"]},{"url":"https://github.com/advisories/GHSA-34r7-q49f-h37c"},{"url":"https://security-tracker.debian.org/tracker/CVE-2015-8857","tags":["advisory"]},{"url":"https://github.com/mishoo/UglifyJS2","tags":["package"]},{"url":"https://zyan.scripts.mit.edu/blog/backdooring-js","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2015-8857","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2015-8857","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2015-8857","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:00:00Z","modified":"2024-08-06T08:29:22.084Z","updated_at":"2026-11-02T14:35:40.900357Z"}],"euvd":[{"id":"EUVD-2017-0154","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:00:00Z","modified":"2024-08-06T08:29:22Z","updated_at":"2026-11-03T01:57:25.869767Z"}],"ghsa":[{"id":"GHSA-34r7-q49f-h37c","title":"Incorrect Handling of Non-Boolean Comparisons During Minification in uglify-js","description":"Versions of `uglify-js` prior to 2.4.24 are affected by a vulnerability which may cause crafted JavaScript to have altered functionality after minification.\n\n## Recommendation\n\nUpgrade UglifyJS to version \u003e= 2.4.24.","status":"published","published":"2017-10-24T18:33:36Z","modified":"2023-04-12T17:38:07Z","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"}],"cwes":["CWE-670","CWE-1254"],"updated_at":"2026-11-02T14:36:50.476488Z"}],"nvd":[{"id":"CVE-2015-8857","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:59:00.58Z","modified":"2026-06-17T00:35:22.707Z","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","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-254"],"updated_at":"2026-11-02T14:03:16.97467Z"}],"osv":[{"id":"CVE-2015-8857","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:59:00Z","modified":"2026-04-10T03:45:36.752998Z","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"}],"updated_at":"2026-11-02T15:44:01.068991Z"},{"id":"DEBIAN-CVE-2015-8857","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:59:00.58Z","modified":"2026-09-09T07:01:46.490039316Z","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"}],"updated_at":"2026-11-02T15:45:27.04239Z"},{"id":"GHSA-34r7-q49f-h37c","title":"Incorrect Handling of Non-Boolean Comparisons During Minification in uglify-js","description":"Versions of `uglify-js` prior to 2.4.24 are affected by a vulnerability which may cause crafted JavaScript to have altered functionality after minification.\n\n## Recommendation\n\nUpgrade UglifyJS to version \u003e= 2.4.24.","status":"published","published":"2017-10-24T18:33:36Z","modified":"2024-02-16T08:16:42.823655Z","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"}],"cwes":["CWE-1254","CWE-670"],"updated_at":"2026-11-02T15:46:35.050232Z"},{"id":"UBUNTU-CVE-2015-8857","description":"The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.","status":"published","published":"2017-01-23T21:59:00Z","modified":"2025-10-24T04:45:31Z","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"}],"updated_at":"2026-11-02T15:54:11.100633Z"},{"id":"CLSA-2026-1773274555","title":"TuxCare security update for uglify-js (2 CVEs)","description":"TuxCare rebuilt uglify-js to address 2 CVEs. Fixed in 1.1.1-tuxcare.1.","status":"published","published":"2026-08-04T14:52:12Z","modified":"2026-10-15T09:47:27.840440242Z","updated_at":"2026-11-02T15:43:43.621843Z"},{"id":"CLSA-2026-1774225180","title":"TuxCare security update for uglify-js (2 CVEs)","description":"TuxCare rebuilt uglify-js to address 2 CVEs. Fixed in 1.3.5-tuxcare.1.","status":"published","published":"2026-08-04T14:52:14Z","modified":"2026-10-15T09:47:00.988532877Z","updated_at":"2026-11-02T15:43:43.621843Z"},{"id":"CLSA-2026-1774225182","title":"TuxCare security update for uglify-js (2 CVEs)","description":"TuxCare rebuilt uglify-js to address 2 CVEs. Fixed in 2.3.6-tuxcare.1.","status":"published","published":"2026-08-04T14:52:14Z","modified":"2026-10-15T09:47:01.633614755Z","updated_at":"2026-11-02T15:43:43.621843Z"},{"id":"CLSA-2026-1776904629","title":"TuxCare security update for uglify-js (2 CVEs)","description":"TuxCare rebuilt uglify-js to address 2 CVEs. Fixed in 2.8.29-tuxcare.1.","status":"published","published":"2026-08-04T14:52:27Z","modified":"2026-10-15T09:45:46.472995525Z","updated_at":"2026-11-02T15:43:44.384419Z"},{"id":"CLSA-2026-1776904632","title":"TuxCare security update for uglify-js (2 CVEs)","description":"TuxCare rebuilt uglify-js to address 2 CVEs. Fixed in 3.4.10-tuxcare.1.","status":"published","published":"2026-08-04T14:52:27Z","modified":"2026-10-15T09:45:47.162905046Z","updated_at":"2026-11-02T15:43:44.384419Z"}]}}
