{"id":"CVE-2015-9235","aliases":["CLSA-2026-1774657373","CLSA-2026-1787321999","CLSA-2026-1787322010","EUVD-2018-0569","GHSA-c7hr-j4mj-j2w6","ROOT-APP-NPM-CVE-2015-9235"],"status":"published","title":"Verification Bypass in jsonwebtoken","description":"In jsonwebtoken node module before 4.2.2 it is possible for an attacker to bypass verification when a token digitally signed with an asymmetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).","severity":{"version":"3.0","score":9.8,"vector":"CVSS:3.0/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-09","score":0.08367,"percentile":0.95005,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-20","CWE-327"],"published":"2018-05-29T20:00:00Z","modified":"2026-10-22T10:15:02Z","exploits":[{"source":"pocgithub","id":"aalex954/jwt-key-confusion-poc","title":"aalex954/jwt-key-confusion-poc","date":"2022-01-13","url":"https://github.com/aalex954/jwt-key-confusion-poc"},{"source":"pocgithub","id":"Nxvh1337/CVE-2015-9235_JWT_key_confusion","title":"Nxvh1337/CVE-2015-9235_JWT_key_confusion","date":"2023-09-10","url":"https://github.com/Nxvh1337/CVE-2015-9235_JWT_key_confusion"},{"source":"pocgithub","id":"z-bool/Venom-JWT","title":"z-bool/Venom-JWT","date":"2025-01-27","url":"https://github.com/z-bool/Venom-JWT"},{"source":"pocgithub","id":"tierChampion/POC_CVE-2015-9235","title":"tierChampion/POC_CVE-2015-9235","date":"2026-03-11","url":"https://github.com/tierChampion/POC_CVE-2015-9235"}],"fixes":[{"ecosystem":"npm","package":"jsonwebtoken","fixed_in":["4.2.2"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"jsonwebtoken","fixed_in":["0.4.1-tuxcare.1"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"jsonwebtoken","fixed_in":["0.1.0-aikido.3","0.4.0-aikido.3","0.1.0-aikido.5","0.1.0-aikido.4","0.4.0-aikido.4"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/jsonwebtoken","fixed_in":["0.1.0-root.io.1","0.4.0-root.io.1","0.1.0-root.io.2","0.4.0-root.io.2","0.1.0-root.io.3","0.4.0-root.io.3","0.1.0-root.io.5","0.1.0-root.io.4","0.4.0-root.io.4"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.2.2"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.4.1-tuxcare.0"},{"fixed":"0.4.1-tuxcare.1"}]}],"versions":["0.4.1"]},{"source":"osv","ecosystem":"TuxCare:npm","package":"jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.4.0-tuxcare.0"},{"fixed":"0.4.0-tuxcare.7"}]}],"versions":["0.4.0","0.4.0-tuxcare.1","0.4.0-tuxcare.2","0.4.0-tuxcare.3","0.4.0-tuxcare.4","0.4.0-tuxcare.5","0.4.0-tuxcare.6"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.3.0-tuxcare.0"},{"fixed":"0.3.0-tuxcare.3"}]}],"versions":["0.3.0","0.3.0-tuxcare.1","0.3.0-tuxcare.2"],"bundled":3},{"source":"osv","ecosystem":"npm","package":"jsonwebtoken","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"4.2.2"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.1.0-aikido.3"},{"fixed":"0.4.0-aikido.3"},{"fixed":"0.1.0-aikido.5"},{"fixed":"0.1.0-aikido.4"},{"fixed":"0.4.0-aikido.4"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/jsonwebtoken","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.1.0-root.io.1"},{"fixed":"0.4.0-root.io.1"},{"fixed":"0.1.0-root.io.2"},{"fixed":"0.4.0-root.io.2"},{"fixed":"0.1.0-root.io.3"},{"fixed":"0.4.0-root.io.3"},{"fixed":"0.1.0-root.io.5"},{"fixed":"0.1.0-root.io.4"},{"fixed":"0.4.0-root.io.4"}]}]}],"products":[{"vendor":"auth0","product":"jsonwebtoken"},{"vendor":"hackerone","product":"jsonwebtoken node module"}],"references":[{"url":"https://nodesecurity.io/advisories/17","tags":["x_refsource_MISC","x_transferred","Third Party Advisory"]},{"url":"https://github.com/auth0/node-jsonwebtoken/commit/1bb584bc382295eeb7ee8c4452a673a77a68b687","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","web"]},{"url":"https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/","tags":["x_refsource_MISC","x_transferred","Broken Link","Vendor Advisory"]},{"url":"https://www.timmclean.net/2015/02/25/jwt-alg-none.html","tags":["x_refsource_MISC","x_transferred","Exploit","Third Party Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2015-9235","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-c7hr-j4mj-j2w6","tags":["advisory"]},{"url":"https://www.npmjs.com/advisories/17","tags":["web"]},{"url":"https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2015-9235","description":"In jsonwebtoken node module before 4.2.2 it is possible for an attacker to bypass verification when a token digitally signed with an asymmetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).","status":"published","published":"2018-05-29T20:00:00Z","modified":"2024-09-16T23:05:54.01Z","cwes":["CWE-20"],"updated_at":"2026-11-02T14:35:40.591596Z"}],"euvd":[{"id":"EUVD-2018-0569","description":"In jsonwebtoken node module before 4.2.2 it is possible for an attacker to bypass verification when a token digitally signed with an asymmetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).","status":"published","published":"2018-05-29T20:00:00Z","modified":"2024-09-16T23:05:54Z","updated_at":"2026-11-03T00:54:56.752396Z"}],"ghsa":[{"id":"GHSA-c7hr-j4mj-j2w6","title":"Verification Bypass in jsonwebtoken","description":"Versions 4.2.1 and earlier of `jsonwebtoken` are affected by a verification bypass vulnerability. This is a result of weak validation of the JWT algorithm type, occuring when an attacker is allowed to arbitrarily specify the JWT algorithm.\n\n\n\n\n## Recommendation\n\nUpdate to version 4.2.2 or later.","status":"published","published":"2018-10-09T00:38:30Z","modified":"2023-01-09T05:02:50Z","cwes":["CWE-20"],"updated_at":"2026-11-02T14:36:03.768255Z"}],"nvd":[{"id":"CVE-2015-9235","description":"In jsonwebtoken node module before 4.2.2 it is possible for an attacker to bypass verification when a token digitally signed with an asymmetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).","status":"published","published":"2018-05-29T20:29:00.33Z","modified":"2026-06-17T00:36:06.623Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/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-20","CWE-327"],"updated_at":"2026-11-02T14:03:19.244941Z"}],"osv":[{"id":"CLSA-2026-1774657373","title":"TuxCare security update for jsonwebtoken (1 CVE)","description":"TuxCare rebuilt jsonwebtoken to address 1 CVE. Fixed in 0.4.1-tuxcare.1.","status":"published","published":"2026-08-04T14:52:15Z","modified":"2026-10-15T09:47:48.690201371Z","updated_at":"2026-11-02T15:43:43.621843Z"},{"id":"CLSA-2026-1787321999","title":"TuxCare security update for jsonwebtoken (2 CVEs)","description":"TuxCare rebuilt jsonwebtoken to address 2 CVEs. Fixed in 0.4.0-tuxcare.7.","status":"published","published":"2026-08-21T14:19:59Z","modified":"2026-10-15T09:46:45.667936006Z","updated_at":"2026-11-02T15:43:47.20725Z"},{"id":"CLSA-2026-1787322010","title":"TuxCare security update for jsonwebtoken (3 CVEs)","description":"TuxCare rebuilt jsonwebtoken to address 3 CVEs. Fixed in 0.3.0-tuxcare.3.","status":"published","published":"2026-08-21T14:20:10Z","modified":"2026-10-15T09:46:45.665795689Z","updated_at":"2026-11-02T15:43:47.20725Z"},{"id":"GHSA-c7hr-j4mj-j2w6","title":"Verification Bypass in jsonwebtoken","description":"Versions 4.2.1 and earlier of `jsonwebtoken` are affected by a verification bypass vulnerability. This is a result of weak validation of the JWT algorithm type, occuring when an attacker is allowed to arbitrarily specify the JWT algorithm.\n\n\n\n\n## Recommendation\n\nUpdate to version 4.2.2 or later.","status":"published","published":"2018-10-09T00:38:30Z","modified":"2026-09-10T03:48:15.346337398Z","cwes":["CWE-20"],"updated_at":"2026-11-02T15:46:44.571161Z"},{"id":"ROOT-APP-NPM-CVE-2015-9235","title":"CVE-2015-9235 in jsonwebtoken - Patched by Root","description":"Root has patched CVE-2015-9235 in the jsonwebtoken package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-10-22T09:24:43Z","modified":"2026-10-22T10:15:02.842271879Z","updated_at":"2026-11-02T15:53:27.362922Z"}]}}
