CVE-2026-27932
Python vulnerability analysis and mitigation

Overview

CVE-2026-27932 is a resource exhaustion vulnerability in joserfc, a Python library implementing JSON Object Signing and Encryption (JOSE) standards, that allows unauthenticated attackers to cause a Denial of Service (DoS) via CPU exhaustion. The flaw affects all joserfc versions up to and including 1.6.2, with version 1.6.3 containing the fix. It was published by the GitHub Advisory Database on February 28, 2026, and assigned CVE-2026-27932 on March 3, 2026. The vulnerability carries a CVSS v3.1 base score of 7.5 (High) (Github Advisory, joserfc Advisory).

Technical details

The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling): the PBES2HSAlgKeyEncryption.decrypt_cek() function in src/joserfc/_rfc7518/jwe_algs.py reads the p2c (PBES2 Count) parameter directly from the attacker-controlled JWE protected header and passes it without validation to PBKDF2HMAC as the iterations argument. An attacker can set p2c to an arbitrarily large integer (e.g., 2^31 - 1), causing the server to perform billions of PBKDF2 iterations per token. Critically, the DoS is triggered during the decryption phase — before any JWT claim validation (e.g., exp, iss, aud) or signature verification — making JWT policy-level defenses ineffective if PBES2 algorithms are permitted. A public proof-of-concept is included in the advisory, demonstrating that 10 million iterations causes approximately 5 seconds of thread blocking per token (joserfc Advisory, Github Advisory).

Impact

Successful exploitation results in complete availability loss for the affected service, with no impact on confidentiality or integrity. An unauthenticated attacker can send a small number of crafted JWE/JWT tokens to exhaust all server CPU resources, causing each worker thread or process to block for a duration proportional to the p2c value — potentially minutes or hours per token. Sending multiple such tokens in rapid succession can render the service entirely unavailable to legitimate users. All high-level JWE and JWT decryption interfaces in joserfc are affected when PBES2 algorithms (e.g., PBES2-HS256+A128KW) are included in the application's algorithm policy (joserfc Advisory).

Exploitability

A public proof-of-concept exploit is available in the GitHub Security Advisory and has also been indexed on Sploitus (PACKETSTORM:216669). The attack requires no authentication, no user interaction, and is network-accessible with low complexity, making it trivially exploitable at scale. There is no confirmed evidence of in-the-wild exploitation at this time. The EPSS score is approximately 0.033–0.048%, indicating a currently low but non-negligible probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (Github Advisory, joserfc Advisory).

Exploitation steps

  1. Identify target: Locate a service that accepts JWE or JWT tokens and uses joserfc ≤ 1.6.2 with PBES2 algorithms (e.g., PBES2-HS256+A128KW) enabled in its decryption policy.
  2. Craft malicious token: Construct a JWE compact token with an extremely large p2c value in the protected header. The header {"alg": "PBES2-HS256+A128KW", "enc": "A128CBC-HS256", "p2s": "<base64url_salt>", "p2c": 2147483647} is Base64url-encoded and used as the token header. The remaining token segments (encrypted key, IV, ciphertext, tag) can be dummy values since the DoS occurs before decryption succeeds.
  3. Send token to target: Submit the crafted token to any endpoint that triggers JWE/JWT decryption (e.g., an authentication or API endpoint accepting Bearer tokens).
  4. Exhaust CPU: The server's joserfc library reads the attacker-controlled p2c value and passes it directly to PBKDF2HMAC, blocking the worker thread for the duration of the computation. With p2c = 10,000,000, this takes approximately 5 seconds per token.
  5. Scale the attack: Send multiple crafted tokens in rapid succession to occupy all available worker threads/processes, causing complete service unavailability for legitimate users (joserfc Advisory, Github Advisory).

Indicators of compromise

  • Network: Repeated HTTP requests to token decryption or authentication endpoints (e.g., /auth, /token, /api/*) containing JWE compact tokens with unusually large p2c values in the Base64url-decoded protected header; high request rate from a single or small set of source IPs.
  • Process/System: Sustained, abnormally high CPU utilization on the application server process (Python interpreter) without a corresponding increase in legitimate traffic; worker threads/processes stuck in PBKDF2 computation for extended periods.
  • Logs: Application logs showing repeated decryption attempts that either time out or raise exceptions; access logs with requests to token-accepting endpoints from unexpected sources with unusually small payload sizes (crafted tokens with dummy ciphertext segments).
  • Application Metrics: Sudden spike in request latency or thread pool exhaustion metrics; drop in successful authentication or API response rates coinciding with the anomalous requests (joserfc Advisory).

Mitigation and workarounds

Upgrade joserfc to version 1.6.3 or later, which introduces a validate_p2c() function that enforces a maximum p2c value of 300,000 and raises a ValueError for out-of-bounds values (patch commit). If immediate patching is not possible, disable PBES2 algorithms entirely in the application's JWE/JWT algorithm allowlist if password-based encryption is not required. Additionally, implement rate limiting on token decryption endpoints and consider adding application-level input validation to reject tokens with p2c values exceeding a safe threshold (e.g., 300,000) before passing them to joserfc. OpenSUSE has also released a security update for the python-joserfc package (Github Advisory, joserfc Advisory).

Community reactions

The vulnerability was reported by researchers Jaynornj and Pr00fOf3xpl0it and patched promptly by the joserfc maintainer (lepture) with commit 696a961. The advisory was picked up by automated CVE tracking accounts on Bluesky and Nitter shortly after publication. OpenSUSE issued a security announcement for its python-joserfc package, and Tenable released Nessus detection plugins (IDs 300928 and 301412). No significant broader media coverage or notable researcher commentary beyond the advisory itself has been identified (joserfc Advisory, Github Advisory).

Additional resources


SourceThis report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-63003MEDIUM6.5
  • Python logoPython
  • django-cms
NoYesAug 20, 2026
CVE-2026-54624MEDIUM6.5
  • Python logoPython
  • django-cms
NoYesAug 20, 2026
CVE-2026-54622MEDIUM6.5
  • Python logoPython
  • django-cms
NoYesAug 20, 2026
CVE-2026-75526MEDIUM4.4
  • Python logoPython
  • django-cms
NoYesAug 20, 2026
CVE-2026-61663MEDIUM4.3
  • Python logoPython
  • django-cms
NoYesAug 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management