{"id":"CVE-2023-51774","aliases":["EUVD-2024-0613","GHSA-c8v6-786g-vjx6","UBUNTU-CVE-2023-51774","openSUSE-SU-2025:0004-1"],"status":"published","title":"json-jwt allows bypass of identity checks via a sign/encryption confusion attack","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","severity":{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-11","score":0.00231,"percentile":0.14066,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-284"],"published":"2023-12-25T00:00:00Z","modified":"2026-10-28T02:30:24Z","fixes":[{"ecosystem":"RubyGems","package":"json-jwt","fixed_in":["1.16.6","1.15.3.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.16.0"},{"fixed":"1.16.6"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.3.1"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.16.0"},{"fixed":"1.16.6"}]}],"versions":["1.16.0","1.16.1","1.16.2","1.16.3","1.16.4","1.16.5"]},{"source":"osv","ecosystem":"RubyGems","package":"json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.3.1"}]}],"versions":["0.0.0","0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.0.7","0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8","0.2.0","0.3.0","0.3.1","0.3.2","0.3.3","0.4.0","0.4.1","0.4.2","0.4.3","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.5.6","0.6.0","0.6.1","0.7.0","0.7.0.alpha","0.7.0.alpha2","0.7.1","0.8.0","0.8.1","1.0.0","1.0.1","1.0.2","1.0.3","1.1.0","1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.15.1","1.15.2","1.15.3","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.3.0","1.3.1","1.4.0","1.5.0","1.5.1","1.5.2","1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.7.0","1.7.1","1.7.2","1.8.0","1.8.1","1.8.1.pre","1.8.2","1.8.3","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.2-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.9.4-1","1.11.0-1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.11.0-1","1.13.0-1","1.13.0-1ubuntu0.1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.14.0-2"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.16.7-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.17.0-1","1.17.1-1","1.17.2-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"ruby-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.16.7-1","1.17.0-1"]},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP5","package":"rubygem-aes_key_wrap","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.0-bp155.2.1"}]}],"bundled":2},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP5","package":"rubygem-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.16.6-bp155.3.3.1"}]}],"bundled":2},{"source":"osv","ecosystem":"openSUSE:Leap 15.5","package":"rubygem-aes_key_wrap","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.0-bp155.2.1"}]}],"bundled":2},{"source":"osv","ecosystem":"openSUSE:Leap 15.5","package":"rubygem-json-jwt","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.16.6-bp155.3.3.1"}]}],"bundled":2}],"products":[{"vendor":"json-jwt_project","product":"json-jwt"}],"references":[{"url":"https://github.com/P3ngu1nW/CVE_Request/blob/main/novjson-jwt.md","tags":["x_transferred","Exploit","Third Party Advisory","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2023-51774","tags":["advisory"]},{"url":"https://github.com/nov/json-jwt/issues/120","tags":["web"]},{"url":"https://github.com/nov/json-jwt/commit/9c4d842a9465bd7960570ca326c3de79b4abc9d0","tags":["web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/json-jwt/CVE-2023-51774.yml","tags":["web"]},{"url":"https://github.com/nov/json-jwt/issues/121","tags":["web"]},{"url":"https://github.com/nov/json-jwt/commit/593ea8bcaf2629048bad8c036191f2da0a2e713c","tags":["web"]},{"url":"https://github.com/advisories/GHSA-c8v6-786g-vjx6"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/51xxx/CVE-2023-51774.json","tags":["advisory"]},{"url":"https://github.com/nov/json-jwt","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2023-51774","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2023-51774","tags":["report"]},{"url":"https://lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/thread/FICWL2K7EGMUBVQ6CHEQYANYFEU4XBG4/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1156649","tags":["report"]},{"url":"https://bugzilla.suse.com/1220727","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2019-18848","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-51774","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2023-51774","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2023-12-25T00:00:00Z","modified":"2024-08-26T20:08:16.108Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-284"],"updated_at":"2026-11-02T14:35:17.812395Z"}],"euvd":[{"id":"EUVD-2024-0613","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2023-12-25T00:00:00Z","modified":"2024-08-26T20:08:16Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-03T00:56:10.956482Z"}],"ghsa":[{"id":"GHSA-c8v6-786g-vjx6","title":"json-jwt allows bypass of identity checks via a sign/encryption confusion attack","description":"The json-jwt (aka JSON::JWT) gem 1.16.x before 1.16.6, 1.15.x before 1.15.3.1 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2024-02-29T03:33:14Z","modified":"2024-03-06T23:50:38Z","updated_at":"2026-11-02T14:37:39.730152Z"}],"nvd":[{"id":"CVE-2023-51774","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2024-02-29T01:42:05.597Z","modified":"2026-06-17T06:41:38.193Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-284"],"updated_at":"2026-11-02T14:09:07.077422Z"}],"osv":[{"id":"CVE-2023-51774","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2023-12-25T00:00:00Z","modified":"2026-10-28T02:30:24.950623535Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:44:35.245372Z"},{"id":"UBUNTU-CVE-2023-51774","description":"The json-jwt (aka JSON::JWT) gem 1.16.3 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2024-02-29T01:42:00Z","modified":"2026-10-17T12:57:22.801591727Z","cvss":[{"version":"3.1","score":8.4,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:54:23.935133Z"},{"id":"GHSA-c8v6-786g-vjx6","title":"json-jwt allows bypass of identity checks via a sign/encryption confusion attack","description":"The json-jwt (aka JSON::JWT) gem 1.16.x before 1.16.6, 1.15.x before 1.15.3.1 for Ruby sometimes allows bypass of identity checks via a sign/encryption confusion attack. For example, JWE can sometimes be used to bypass JSON::JWT.decode.","status":"published","published":"2024-02-29T03:33:14Z","modified":"2026-09-10T03:50:06.209342609Z","updated_at":"2026-11-02T15:46:44.927642Z"},{"id":"openSUSE-SU-2025:0004-1","title":"Security update for rubygem-json-jwt","description":"This update for rubygem-json-jwt fixes the following issues:\n\n- New upstream release 1.16.6, see bundled CHANGELOG.md\n\n- Remove padding oracle by @btoews in https://github.com/nov/json-jwt/pull/109\n- Fixes CVE-2023-51774 boo#1220727\n\n- updated to version 1.11.0\n  - no changelog found\n  - Fixes CVE-2019-18848 boo#1156649 \n\n","status":"published","published":"2025-01-07T17:01:48Z","modified":"2026-02-04T04:39:42.384646Z","updated_at":"2026-11-02T16:58:36.976155Z"}]}}
