RHSA-2026:97858

Vulnerability from csaf_redhat - Published: 2026-11-10 22:36 - Updated: 2026-11-10 22:38
Summary
Red Hat Security Advisory: python-jwcrypto security update
Severity
Moderate
Notes
Topic: An update for python-jwcrypto is now available for Red Hat Enterprise Linux 9. Red Hat Product Security has rated this update as having a security impact of Moderate. A Common Vulnerability Scoring System (CVSS) base score, which gives a detailed severity rating, is available for each vulnerability from the CVE link(s) in the References section.
Details: Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems. Security Fix(es): * jwcrypto: jwcrypto: denial of service via O(n^2) duplicate check on unbounded JWK key_ops array (CVE-2026-92091) For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
Terms of Use: This content is licensed under the Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/). If you distribute this content, or a modified version of it, you must provide attribution to Red Hat Inc. and provide a link to the original.

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.

CWE-407 - Inefficient Algorithmic Complexity
Affected products
Product Identifier Version Remediation
Unresolved product id: AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src —
Vendor Fix fix
Workaround
Unresolved product id: AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch —
Vendor Fix fix
Workaround
Threats
Impact Moderate

{
  "document": {
    "aggregate_severity": {
      "namespace": "https://access.redhat.com/security/updates/classification/",
      "text": "Moderate"
    },
    "category": "csaf_security_advisory",
    "csaf_version": "2.0",
    "distribution": {
      "text": "Copyright \u00a9 Red Hat, Inc. All rights reserved.",
      "tlp": {
        "label": "WHITE",
        "url": "https://www.first.org/tlp/"
      }
    },
    "lang": "en",
    "notes": [
      {
        "category": "summary",
        "text": "An update for python-jwcrypto is now available for Red Hat Enterprise Linux 9.\n\nRed Hat Product Security has rated this update as having a security impact of Moderate. A Common Vulnerability Scoring System (CVSS) base score, which gives a detailed severity rating, is available for each vulnerability from the CVE link(s) in the References section.",
        "title": "Topic"
      },
      {
        "category": "general",
        "text": "Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.\n\nSecurity Fix(es):\n\n* jwcrypto: jwcrypto: denial of service via O(n^2) duplicate check on unbounded JWK key_ops array (CVE-2026-92091)\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.",
        "title": "Details"
      },
      {
        "category": "legal_disclaimer",
        "text": "This content is licensed under the Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/). If you distribute this content, or a modified version of it, you must provide attribution to Red Hat Inc. and provide a link to the original.",
        "title": "Terms of Use"
      }
    ],
    "publisher": {
      "category": "vendor",
      "contact_details": "https://access.redhat.com/security/team/contact/",
      "issuing_authority": "Red Hat Product Security is responsible for vulnerability handling across all Red Hat products and services.",
      "name": "Red Hat Product Security",
      "namespace": "https://www.redhat.com"
    },
    "references": [
      {
        "category": "self",
        "summary": "https://access.redhat.com/errata/RHSA-2026:97858",
        "url": "https://access.redhat.com/errata/RHSA-2026:97858"
      },
      {
        "category": "external",
        "summary": "https://access.redhat.com/security/updates/classification/#moderate",
        "url": "https://access.redhat.com/security/updates/classification/#moderate"
      },
      {
        "category": "external",
        "summary": "2533849",
        "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2533849"
      },
      {
        "category": "self",
        "summary": "Canonical URL",
        "url": "https://security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_97858.json"
      }
    ],
    "title": "Red Hat Security Advisory: python-jwcrypto security update",
    "tracking": {
      "current_release_date": "2026-11-10T22:38:57+00:00",
      "generator": {
        "date": "2026-11-10T22:38:57+00:00",
        "engine": {
          "name": "Red Hat SDEngine",
          "version": "5.4.5"
        }
      },
      "id": "RHSA-2026:97858",
      "initial_release_date": "2026-11-10T22:36:46+00:00",
      "revision_history": [
        {
          "date": "2026-11-10T22:36:46+00:00",
          "number": "1",
          "summary": "Initial version"
        },
        {
          "date": "2026-11-10T22:36:46+00:00",
          "number": "2",
          "summary": "Last updated version"
        },
        {
          "date": "2026-11-10T22:38:57+00:00",
          "number": "3",
          "summary": "Last generated version"
        }
      ],
      "status": "final",
      "version": "3"
    }
  },
  "product_tree": {
    "branches": [
      {
        "branches": [
          {
            "branches": [
              {
                "category": "product_name",
                "name": "Red Hat Enterprise Linux AppStream (v. 9)",
                "product": {
                  "name": "Red Hat Enterprise Linux AppStream (v. 9)",
                  "product_id": "AppStream-9.9.0.Z.MAIN",
                  "product_identification_helper": {
                    "cpe": "cpe:/a:redhat:enterprise_linux:9::appstream"
                  }
                }
              }
            ],
            "category": "product_family",
            "name": "Red Hat Enterprise Linux"
          },
          {
            "branches": [
              {
                "category": "product_version",
                "name": "python-jwcrypto-0:1.6.1-1.el9_9.src",
                "product": {
                  "name": "python-jwcrypto-0:1.6.1-1.el9_9.src",
                  "product_id": "python-jwcrypto-0:1.6.1-1.el9_9.src",
                  "product_identification_helper": {
                    "purl": "pkg:rpm/redhat/python-jwcrypto@1.6.1-1.el9_9?arch=src"
                  }
                }
              }
            ],
            "category": "architecture",
            "name": "src"
          },
          {
            "branches": [
              {
                "category": "product_version",
                "name": "python3-jwcrypto-0:1.6.1-1.el9_9.noarch",
                "product": {
                  "name": "python3-jwcrypto-0:1.6.1-1.el9_9.noarch",
                  "product_id": "python3-jwcrypto-0:1.6.1-1.el9_9.noarch",
                  "product_identification_helper": {
                    "purl": "pkg:rpm/redhat/python3-jwcrypto@1.6.1-1.el9_9?arch=noarch"
                  }
                }
              }
            ],
            "category": "architecture",
            "name": "noarch"
          }
        ],
        "category": "vendor",
        "name": "Red Hat"
      }
    ],
    "relationships": [
      {
        "category": "default_component_of",
        "full_product_name": {
          "name": "python-jwcrypto-0:1.6.1-1.el9_9.src as a component of Red Hat Enterprise Linux AppStream (v. 9)",
          "product_id": "AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src"
        },
        "product_reference": "python-jwcrypto-0:1.6.1-1.el9_9.src",
        "relates_to_product_reference": "AppStream-9.9.0.Z.MAIN"
      },
      {
        "category": "default_component_of",
        "full_product_name": {
          "name": "python3-jwcrypto-0:1.6.1-1.el9_9.noarch as a component of Red Hat Enterprise Linux AppStream (v. 9)",
          "product_id": "AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch"
        },
        "product_reference": "python3-jwcrypto-0:1.6.1-1.el9_9.noarch",
        "relates_to_product_reference": "AppStream-9.9.0.Z.MAIN"
      }
    ]
  },
  "vulnerabilities": [
    {
      "cve": "CVE-2026-92091",
      "cwe": {
        "id": "CWE-407",
        "name": "Inefficient Algorithmic Complexity"
      },
      "discovery_date": "2026-09-14T00:00:00+00:00",
      "ids": [
        {
          "system_name": "Red Hat Bugzilla ID",
          "text": "2533849"
        }
      ],
      "notes": [
        {
          "category": "description",
          "text": "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.",
          "title": "Vulnerability description"
        },
        {
          "category": "summary",
          "text": "jwcrypto: jwcrypto: denial of service via O(n^2) duplicate check on unbounded JWK key_ops array",
          "title": "Vulnerability summary"
        },
        {
          "category": "other",
          "text": "This Moderate flaw in `jwcrypto` allows a remote, unauthenticated attacker to trigger a denial of service in Red Hat products that process untrusted JSON Web Key (JWK) material. By supplying a JWK with an excessively large `key_ops` array, an attacker can cause applications to consume significant CPU resources during validation, leading to service unavailability.",
          "title": "Statement"
        },
        {
          "category": "general",
          "text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
          "title": "CVSS score applicability"
        }
      ],
      "product_status": {
        "fixed": [
          "AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src",
          "AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch"
        ]
      },
      "references": [
        {
          "category": "self",
          "summary": "Canonical URL",
          "url": "https://access.redhat.com/security/cve/CVE-2026-92091"
        },
        {
          "category": "external",
          "summary": "RHBZ#2533849",
          "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2533849"
        },
        {
          "category": "external",
          "summary": "https://www.cve.org/CVERecord?id=CVE-2026-92091",
          "url": "https://www.cve.org/CVERecord?id=CVE-2026-92091"
        },
        {
          "category": "external",
          "summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-92091",
          "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-92091"
        },
        {
          "category": "external",
          "summary": "https://github.com/latchset/jwcrypto/security/advisories/GHSA-pwgw-f7xr-863h",
          "url": "https://github.com/latchset/jwcrypto/security/advisories/GHSA-pwgw-f7xr-863h"
        }
      ],
      "release_date": "2026-09-16T07:04:07.808000+00:00",
      "remediations": [
        {
          "category": "vendor_fix",
          "date": "2026-11-10T22:36:46+00:00",
          "details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\n\nhttps://access.redhat.com/articles/11258",
          "product_ids": [
            "AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src",
            "AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch"
          ],
          "restart_required": {
            "category": "none"
          },
          "url": "https://access.redhat.com/errata/RHSA-2026:97858"
        },
        {
          "category": "workaround",
          "details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.",
          "product_ids": [
            "AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src",
            "AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch"
          ]
        }
      ],
      "scores": [
        {
          "cvss_v3": {
            "attackComplexity": "HIGH",
            "attackVector": "NETWORK",
            "availabilityImpact": "HIGH",
            "baseScore": 5.9,
            "baseSeverity": "MEDIUM",
            "confidentialityImpact": "NONE",
            "integrityImpact": "NONE",
            "privilegesRequired": "NONE",
            "scope": "UNCHANGED",
            "userInteraction": "NONE",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "products": [
            "AppStream-9.9.0.Z.MAIN:python-jwcrypto-0:1.6.1-1.el9_9.src",
            "AppStream-9.9.0.Z.MAIN:python3-jwcrypto-0:1.6.1-1.el9_9.noarch"
          ]
        }
      ],
      "threats": [
        {
          "category": "impact",
          "details": "Moderate"
        }
      ],
      "title": "jwcrypto: jwcrypto: denial of service via O(n^2) duplicate check on unbounded JWK key_ops array"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
How durations are calculated

Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.

Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.

Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.