Authlib incomplete algorithm-confusion fix permits HMAC forgery with prefixed public keys
CVE-2026-114615
Summary OctKey.importkey() carries the only guard that stops an asymmetric public key from being used as an HMAC secret in authlib.jose. That guard is rawkey.startswith(POSSIBLEUNSAFEKEYS) — anchored at byte 0 — while the loader that consumes the identical bytes on the asymmetric path (cryptography.hazmat.primitives.serialization.loadpempublickey / loadpemx509certificate) skips anything before the -----BEGIN line. A PEM public key or X.509 certificate carrying one leading byte — a newline, a space, four spaces of indentation, a UTF-8 BOM, or a comment line — is therefore not recognised, falls through, and becomes the HMAC secret. An attacker holding only the issuer's public key then mints an HS256 token with arbitrary claims that jwt.decode() accepts as authentic. This is an incomplete fix of CVE-2024-37568 / GHSA-5357-c2jx-v7qh. That advisory's fix is exactly this guard (git log -S 'POSSIBLEUNSAFEKEYS' -- authlib/jose/rfc7518/octkey.py returns a single commit, 3bea812 "fix: prevent OctKey to import ssh/rsa/pem keys", referencing issue #654), and the original attack works again unchanged whenever the stored PEM does not start at offset 0. Reproduced end-to-end on 1.8.0, the newest…
Assessment
- CVSS
- 7.4 (v3.1)
- Severity
- High
- EPSS
- 0.00213% chance of exploitation in the next 30 days
- Known exploited
- Not listed in CISA KEV
- Exploit availability
- Nothing found in Exploit-DB, Metasploit, Nuclei or public PoC repositories
- Published
- 27 October 2026
- Last updated
- 27 October 2026
- Affected
- pip · authlib
- Weakness
- CWE-184, CWE-347
CVSS vectorCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
At the source
References
- https://github.com/authlib/authlib/security/advisories/GHSA-7vr2-2fgp-9w7p
- https://nvd.nist.gov/vuln/detail/CVE-2026-114615
- https://github.com/authlib/authlib/pull/945
- https://github.com/authlib/authlib/commit/e3bd41cb29dcfee434453b135ffb487884baeedf
- https://github.com/authlib/authlib/releases/tag/v1.9.0
- https://github.com/advisories/GHSA-7vr2-2fgp-9w7p
Query this programmatically
Agents can read this through the MCP endpoint, or over HTTP:
curl https://cve.zerocrew.in/api/cve/CVE-2026-114615