Authlib incomplete algorithm-confusion fix permits HMAC forgery with prefixed public keys
- Published
- Last modified
- Status
- published
- Known exploitation
- Not listed in CISA KEV
- Public exploit
- None on Exploit-DB
Summary
Authlib, a Python library used to build OAuth and OpenID Connect servers, is affected in versions from 1.3.1 up to (but not including) 1.9.0. In certain configurations, an unauthenticated attacker who knows a server's public key can use it as an HMAC secret to forge tokens carrying arbitrary identity or authorization claims.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
Authlib is a Python library which builds OAuth and OpenID Connect servers. From 1.3.1 until 1.9.0, OctKey.import_key() checks asymmetric-key markers only at byte zero while Authlib's PEM loaders accept leading whitespace, comments, or a byte-order mark. In deployments that use the documented mixed algorithm registry and already configure verification with PEM or certificate bytes containing such a prefix, an unauthenticated attacker who knows those same public-key bytes can use them as an HMAC secret and forge HS256 tokens with arbitrary identity or authorization claims. This is a bypass of the remediation for CVE-2024-37568. The module-level jwt object reaches OctKey.import_key() in authlib/jose/rfc7518/oct_key.py, where POSSIBLE_UNSAFE_KEYS fails to identify prefixed asymmetric key material. This issue is fixed in version 1.9.0.
Affected versions
- authlib authlib
From 1.3.1 · fixed in 1.9.0