VYPR
Critical severityNVD Advisory· Published Mar 16, 2026· Updated Mar 18, 2026

Authlib JWS JWK Header Injection: Signature Verification Bypass

CVE-2026-27962

Description

Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to version 1.6.9, a JWK Header Injection vulnerability in authlib's JWS implementation allows an unauthenticated attacker to forge arbitrary JWT tokens that pass signature verification. When key=None is passed to any JWS deserialization function, the library extracts and uses the cryptographic key embedded in the attacker-controlled JWT jwk header field. An attacker can sign a token with their own private key, embed the matching public key in the header, and have the server accept the forged token as cryptographically valid — bypassing authentication and authorization entirely. This issue has been patched in version 1.6.9.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
authlibPyPI
< 1.6.91.6.9

Affected products

1

Patches

1
a5d4b2d4c9e4

fix(jose): do not use header's jwk automatically

https://github.com/authlib/authlibHsiaoming YangFeb 25, 2026via ghsa
2 files changed · +0 4
  • authlib/jose/rfc7515/jws.py+0 2 modified
    @@ -269,8 +269,6 @@ def _prepare_algorithm_key(self, header, payload, key):
             algorithm = self.ALGORITHMS_REGISTRY[alg]
             if callable(key):
                 key = key(header, payload)
    -        elif key is None and "jwk" in header:
    -            key = header["jwk"]
             key = algorithm.prepare_key(key)
             return algorithm, key
     
    
  • authlib/jose/rfc7516/jwe.py+0 2 modified
    @@ -754,6 +754,4 @@ def _validate_private_headers(self, header, alg):
     def prepare_key(alg, header, key):
         if callable(key):
             key = key(header, None)
    -    elif key is None and "jwk" in header:
    -        key = header["jwk"]
         return alg.prepare_key(key)
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.