joserfc

CVE-2026-48990

CVE-2026-48990 is a medium-severity uncontrolled resource consumption vulnerability in joserfc (pip), affecting versions >= 1.3.4, < 1.6.7. It is fixed in 1.6.7.

Key facts
CVSS score
5.3
Medium
Attack vector
Network
Issuing authority
GitHub Advisory Database
Affected package
joserfc
Fixed in
1.6.7
Disclosed
2026

Summary

RFC7797 b64=false JWS payloads bypass JWSRegistry payload-size limits during deserialization Summary Testing revealed that joserfc accepts oversized RFC7797 b64=false JWS payloads without applying JWSRegistry.maxpayloadlength. The normal JWS compact and flattened JSON paths reject payloads above the configured payload-size limit with ExceededSizeError. The RFC7797 unencoded payload paths do not make the same check. A valid b64=false compact or flattened JSON JWS can therefore deserialize successfully with a payload larger than JWSRegistry.maxpayloadlength. This creates a moderate availability/resource-exhaustion risk for applications that accept lower-trust JWS values and rely on joserfc to reject oversized token content during verification. Affected Product Package: joserfc Ecosystem: pip Audited release: 1.6.5 Audit tag: 1.6.5 Audit commit: 881712980934fb601bed26fe3ae1ec0b7780e6f7 Tested affected releases: 1.3.4, 1.3.5, 1.4.2, 1.6.2, 1.6.3, 1.6.4, 1.6.5 Fixed release: none known Vulnerability Details In joserfc 1.6.5, the default JWS registry has maxpayloadlength = 128000 and exposes validatepayloadsize(). The normal compact extraction path calls that check before base64url-decoding the payload. The RFC7797 compact path validates the header and signature segment sizes, then assigns the unencoded payload directly: The flattened JSON RFC7797 path has the same pattern: Neither branch calls registry.validatepayloadsize(payloadsegment) before accepting the unencoded payload. Reproduction The proof below uses only local Python APIs. It signs a payload one byte over the default limit and then compares normal JWS behavior with RFC7797 b64=false behavior. Requirements: Run: Self-contained proof script: Expected output on 1.6.5 includes: Version Checks I reproduced the same differential behavior on these releases: | Version | Normal JWS over limit | RFC7797 b64=false over limit | | --- | --- | --- | | 1.3.4 | ExceededSizeError | accepted | | 1.3.5 | ExceededSizeError | accepted | | 1.4.2 | ExceededSizeError | accepted | | 1.6.2 | ExceededSizeError | accepted | | 1.6.3 | ExceededSizeError | accepted | | 1.6.4 | ExceededSizeError | accepted | | 1.6.5 | ExceededSizeError | accepted | The exact earliest affected release may be broader. The versions above are the releases I directly tested where the JWS size-limit boundary exists and the RFC7797 path bypasses it. Relationship to Existing Advisories I found two related public advisories for joserfc, but neither appears to cover this root cause. GHSA-frfh-8v73-gjg4 / CVE-2025-65015 describes oversized token parts being included in ExceededSizeError messages in older release ranges. The issue described here reproduces in 1.6.5 and is not about exception message content. The oversized RFC7797 payload is accepted instead of raising ExceededSizeError. GHSA-w5r5-m38g-f9f9 / CVE-2026-27932 describes unbounded PBES2 p2c iteration counts during JWE decryption. The issue described here is in JWS RFC7797 payload extraction and does not involve PBES2 or JWE decryption. Workarounds Before a fixed release is available, affected applications can reduce exposure by rejecting oversized serialized JWS inputs before passing them to joserfc, disabling or disallowing RFC7797 b64=false tokens if not needed, and enforcing strict request/header/body size limits at the application or reverse-proxy layer. Suggested Remediation Apply registry.validatepayloadsize(payloadsegment) to RFC7797 unencoded payloads before assigning them to the JWS object in both compact and flattened JSON extraction paths. Detached RFC7797 compact payloads supplied through the payload argument should be checked in the same way.

Impact

What is uncontrolled resource consumption?

Crafted input forces the application to consume excessive CPU, memory, or other resources, degrading or denying service. Typical impact: denial of service.

Severity and exposure

CVE-2026-48990 has a CVSS score of 5.3 (Medium). The vector is network-reachable, no privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment.

A fixed version is available (1.6.7). Upgrading removes the vulnerable code path.

Affected versions

pip

  • joserfc (>= 1.3.4, < 1.6.7)

Security releases

  • joserfc → 1.6.7 (pip)
Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter instead of chasing every advisory.

Kodem's runtime-powered SCA identifies whether CVE-2026-48990 is reachable in your applications. Explore open-source security for your team.

See if CVE-2026-48990 is reachable in your applications. Get a demo

Already deployed Kodem? See CVE-2026-48990 in your environment

Remediation advice

Upgrade joserfc to 1.6.7 or later to resolve this vulnerability.

Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.

Frequently asked questions about CVE-2026-48990

What is CVE-2026-48990?

CVE-2026-48990 is a medium-severity uncontrolled resource consumption vulnerability in joserfc (pip), affecting versions >= 1.3.4, < 1.6.7. It is fixed in 1.6.7. Crafted input forces the application to consume excessive CPU, memory, or other resources, degrading or denying service.

How severe is CVE-2026-48990?

CVE-2026-48990 has a CVSS score of 5.3 (Medium). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.

Which versions of joserfc are affected by CVE-2026-48990?

joserfc (pip) versions >= 1.3.4, < 1.6.7 is affected.

Is there a fix for CVE-2026-48990?

Yes. CVE-2026-48990 is fixed in 1.6.7. Upgrade to this version or later.

Is CVE-2026-48990 exploitable, and should I be worried?

Whether CVE-2026-48990 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo

What actually determines whether CVE-2026-48990 is exploitable, and how bad it is?

Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.

How do I fix CVE-2026-48990?

Upgrade joserfc to 1.6.7 or later.

Stop the waste.
Protect your environment with Kodem.