{"id":"CVE-2026-92091","aliases":["AZL-103095","DEBIAN-CVE-2026-92091","EUVD-2026-80228","OESA-2026-4066","SUSE-SU-2026:24218-1","UBUNTU-CVE-2026-92091","openSUSE-SU-2026:11972-1","openSUSE-SU-2026:22073-1"],"status":"published","title":"Jwcrypto: jwcrypto: denial of service via o(n^2) duplicate check on unbounded jwk key_ops array","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","severity":{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-08","score":0.00569,"percentile":0.47393,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-407"],"published":"2026-09-16T07:34:08Z","modified":"2026-11-05T05:36:30Z","fixes":[{"ecosystem":"openEuler:22.03-LTS-SP4","package":"python-jwcrypto","fixed_in":["1.4.2-5.oe2203sp4"],"sources":["osv"]},{"ecosystem":"openEuler:24.03-LTS-SP1","package":"python-jwcrypto","fixed_in":["1.5.0-5.oe2403sp1"],"sources":["osv"]},{"ecosystem":"openEuler:24.03-LTS-SP3","package":"python-jwcrypto","fixed_in":["1.5.0-5.oe2403sp3"],"sources":["osv"]},{"ecosystem":"openEuler:24.03-LTS-SP4","package":"python-jwcrypto","fixed_in":["1.5.0-5.oe2403sp4"],"sources":["osv"]},{"ecosystem":"openEuler:20.03-LTS-SP4","package":"python-jwcrypto","fixed_in":["0.5.0-6.oe2003sp4"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server 16.0","package":"python-jwcrypto","fixed_in":["1.5.6-160000.5.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server for SAP applications 16.0","package":"python-jwcrypto","fixed_in":["1.5.6-160000.5.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"python-jwcrypto","fixed_in":["1.6.1-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 16.0","package":"python-jwcrypto","fixed_in":["1.5.6-160000.5.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Azure Linux:3","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.6.0-9"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.0-1","1.1.0-1+deb12u1","1.5.4-1","1.5.6-1","1.5.6-1.1","1.5.6-1.1~deb13u1","1.5.6-1.2"]},{"source":"osv","ecosystem":"Debian:13","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.6-1","1.5.6-1.1","1.5.6-1.1~deb13u1","1.5.6-1.2"]},{"source":"osv","ecosystem":"Debian:14","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.6-1","1.5.6-1.1","1.5.6-1.1~deb13u1","1.5.6-1.2"]},{"source":"osv","ecosystem":"openEuler:22.03-LTS-SP4","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.2-5.oe2203sp4"}]}]},{"source":"osv","ecosystem":"openEuler:24.03-LTS-SP1","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.0-5.oe2403sp1"}]}]},{"source":"osv","ecosystem":"openEuler:24.03-LTS-SP3","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.0-5.oe2403sp3"}]}]},{"source":"osv","ecosystem":"openEuler:24.03-LTS-SP4","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.0-5.oe2403sp4"}]}]},{"source":"osv","ecosystem":"openEuler:20.03-LTS-SP4","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.5.0-6.oe2003sp4"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 16.0","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.6-160000.5.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP applications 16.0","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.6-160000.5.1"}]}]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.2.1-1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.3.2-1","0.4.2-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.6.0-1","0.6.0-2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.8.0-1","1.0.0-2"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.0-1","1.5.4-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.6-1","1.5.6-1.1","1.5.6-1.2"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.6-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.6.1-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 16.0","package":"python-jwcrypto","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.6-160000.5.1"}]}]}],"products":[{"vendor":"red hat","product":"red hat ansible automation platform 2"},{"vendor":"red hat","product":"red hat enterprise linux 10"},{"vendor":"red hat","product":"red hat enterprise linux 7"},{"vendor":"red hat","product":"red hat enterprise linux 8"},{"vendor":"red hat","product":"red hat enterprise linux 9"},{"vendor":"red hat","product":"red hat openshift ai (rhoai)"},{"vendor":"red hat","product":"red hat openstack platform 16.2"},{"vendor":"red hat","product":"red hat openstack platform 17.1"}],"references":[{"url":"https://access.redhat.com/security/cve/CVE-2026-92091","tags":["vdb-entry","x_refsource_REDHAT","report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2533849","tags":["issue-tracking","x_refsource_REDHAT","report"]},{"url":"https://github.com/latchset/jwcrypto/security/advisories/GHSA-pwgw-f7xr-863h","tags":["exploit","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92091","tags":["web","advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-92091","tags":["advisory"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-4066","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-202624218-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1280816","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2026-92091","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2026-92091","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-92091","tags":["report"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-92091","title":"Jwcrypto: jwcrypto: denial of service via o(n^2) duplicate check on unbounded jwk key_ops array","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T07:34:08.84Z","modified":"2026-11-06T01:48:13.091Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-407"],"updated_at":"2026-11-06T02:55:55.947181Z"}],"euvd":[{"id":"EUVD-2026-80228","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T07:34:08Z","modified":"2026-11-06T01:48:13Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-06T03:02:58.554056Z"}],"nvd":[{"id":"CVE-2026-92091","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T08:16:40.583Z","modified":"2026-11-06T02:17:58.12Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"secondary"}],"cwes":["CWE-407"],"updated_at":"2026-11-06T06:59:05.303911Z"}],"osv":[{"id":"DEBIAN-CVE-2026-92091","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T08:16:40.583Z","modified":"2026-10-01T03:03:55.637173699Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T15:46:06.410207Z"},{"id":"OESA-2026-4066","title":"python-jwcrypto security update","description":"Implements JWK, JWS, JWE specifications with python-cryptography\r\n\r\nSecurity Fix(es):\n\nA flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.(CVE-2026-92091)","status":"published","published":"2026-09-25T01:28:00Z","modified":"2026-09-25T01:45:11.310836537Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T15:52:47.643553Z"},{"id":"UBUNTU-CVE-2026-92091","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T08:16:00Z","modified":"2026-10-17T13:00:37.875477179Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T16:57:40.980117Z"},{"id":"AZL-103095","title":"CVE-2026-92091 affecting package python-jwcrypto 0.6.0-9","description":"A flaw was found in jwcrypto. The JWK.import_key() function validates the key_ops JWK member for duplicate values using an algorithm with O(n^2) time complexity, and the length of key_ops is not bounded. A remote, unauthenticated attacker can supply a JWK with a large key_ops array to an application that passes attacker-controlled key material to a public key-import API (reachable via ECDH-ES key agreement, OIDC dynamic client registration, DPoP, or ACME account key registration, among others) to consume excessive CPU time, resulting in a denial of service.","status":"published","published":"2026-09-16T08:16:40Z","modified":"2026-11-05T05:36:30Z","updated_at":"2026-11-05T16:41:17.326541Z"},{"id":"openSUSE-SU-2026:11972-1","title":"python313-jwcrypto-1.6.1-1.1 on GA media","description":"These are all security issues fixed in the python313-jwcrypto-1.6.1-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-10-02T00:00:00Z","modified":"2026-10-03T17:23:10.331328615Z","updated_at":"2026-11-02T16:58:40.245664Z"},{"id":"openSUSE-SU-2026:22073-1","title":"Security update for python-jwcrypto","description":"This update for python-jwcrypto fixes the following issue:\n\n- CVE-2026-92091: `JWK.import_key()` validates the `key_ops` JWK member for duplicate values using a quadratic\n  complexity algorithm, which allows attackers to cause a denial of service via excessive resource consumption\n  (bsc#1280816).\n","status":"published","published":"2026-10-09T12:17:21Z","modified":"2026-10-19T17:23:12.590614569Z","updated_at":"2026-11-02T16:58:42.426393Z"},{"id":"SUSE-SU-2026:24218-1","title":"Security update for python-jwcrypto","description":"This update for python-jwcrypto fixes the following issue:\n\n- CVE-2026-92091: `JWK.import_key()` validates the `key_ops` JWK member for duplicate values using a quadratic\n  complexity algorithm, which allows attackers to cause a denial of service via excessive resource consumption\n  (bsc#1280816).\n","status":"published","published":"2026-10-09T12:13:13Z","modified":"2026-10-21T17:23:10.747167694Z","updated_at":"2026-11-02T15:54:04.519245Z"}]}}
