{"id":"CVE-2026-114616","kind":"vulnerability","aliases":["CVE-2026-114616"],"related":[],"title":"Authlib: empty HMAC key lets attackers forge accepted OAuth tokens","description":"Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.1, Authlib's OctKey.import_key() and HMAC signing and verification path accept zero-length key material. If an application's secret lookup can return an empty string or empty bytes, a remote attacker can compute the deterministic HS256, HS384, or HS512 signature for arbitrary token claims and have Authlib treat the token as authentic. This issue is fixed in version 1.9.1.","summary":"Authlib's OctKey.import_key() and HMAC signing path accept zero-length keys. If an application's secret lookup returns an empty string or bytes, an attacker can compute valid HS256, HS384 or HS512 signatures for arbitrary claims and have the token accepted as authentic.","severity":"high","cvss":7.4,"epss":0.00212,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["authlib","oauth","openid-connect","package","python"],"not_affected_if":["asymmetric-signing","non-empty-static-secret"],"how_to_check":"- Check the installed Authlib version with `pip show authlib` and look for anything below `1.9.1`.\n- Review the application's secret or key lookup code for paths that can return an empty string or empty bytes for HMAC keys.","fix":"- Upgrade Authlib to `1.9.1` or later.\n- Make the secret lookup fail closed so that empty key material is rejected.","status":"open","published_at":"2026-10-22T22:18:04+00:00","first_seen_at":"2026-10-23T21:57:32+00:00","triaged_at":"2026-10-25T03:25:34+00:00","updated_at":"2026-10-25T03:25:34+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T03:25:34Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Authlib to `1.9.1` or later.\n- Make the secret lookup fail closed so that empty key material is rejected.","reach":"internet","title":"Authlib: empty HMAC key lets attackers forge accepted OAuth tokens","impact":"high","summary":"Authlib's OctKey.import_key() and HMAC signing path accept zero-length keys. If an application's secret lookup returns an empty string or bytes, an attacker can compute valid HS256, HS384 or HS512 signatures for arbitrary claims and have the token accepted as authentic.","category":"package","nicknames":[],"who_cares":["python","authlib","oauth","openid-connect"],"confidence":0.6,"needs_auth":"no","worst_case":"Attacker forges authentic-looking tokens with arbitrary claims, bypassing authentication","analyst_note":"Confirm the affected version range and the exact vulnerable condition from the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-114616) and the Authlib 1.9.1 release notes.","how_to_check":"- Check the installed Authlib version with `pip show authlib` and look for anything below `1.9.1`.\n- Review the application's secret or key lookup code for paths that can return an empty string or empty bytes for HMAC keys.","needs_analyst":true,"not_affected_if":["asymmetric-signing","non-empty-static-secret"],"who_is_affected":"Applications that use Authlib to issue or verify HMAC-signed (HS256, HS384, HS512) tokens, where the key is fetched from a lookup that can return an empty value, such as a missing or unset configuration secret. Applications using asymmetric signing or fixed non-empty secrets are less exposed. Teams not using Authlib can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000669,"input_tokens":3408,"output_tokens":656,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-114616':13A,16A '-2026':12A,15A '1.9.1':83C,144C 'accept':8A,32B,66B,94C 'applic':39B,102C 'arbitrari':60B,127C 'attack':6A,50B,116C 'authent':68B,137C 'authlib':1A,17B,24B,69C,84C,132C 'build':75C 'byte':48B,113C 'claim':61B,129C 'comput':52B,118C 'connect':21B,79C 'cve':11A,14A 'determinist':120C 'empti':2A,45B,109C,112C 'fix':141C 'forg':7A 'hmac':3A,29B,89C 'hs256':54B,121C 'hs384':55B,122C 'hs512':57B,124C 'issu':139C 'key':4A,27B,36B,87C,98C 'length':35B,97C 'let':5A 'librari':73C 'lookup':42B,105C 'materi':99C 'oauth':9A,18B,76C 'octkey.import':26B,86C 'openid':20B,78C 'openid-connect':19B 'packag':22B 'path':31B,93C 'prior':81C 'python':23B,72C 'remot':115C 'return':43B,107C 'secret':41B,104C 'server':80C 'sign':30B,90C 'signatur':58B,125C 'string':46B,110C 'token':10A,65B,128C,135C 'treat':133C 'valid':53B 'verif':92C 'version':143C 'zero':34B,96C 'zero-length':33B,95C","nicknames":[],"mitigations":[],"who_affected":"Applications that use Authlib to issue or verify HMAC-signed (HS256, HS384, HS512) tokens, where the key is fetched from a lookup that can return an empty value, such as a missing or unset configuration secret. Applications using asymmetric signing or fixed non-empty secrets are less exposed. Teams not using Authlib can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T22:18:04+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114616","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114616","severity":null,"published_at":"2026-10-22T22:18:04+00:00","modified_at":"2026-10-23T19:34:14+00:00","first_seen_at":"2026-10-23T21:57:32+00:00","fetched_at":"2026-10-23T22:29:03+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114616","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114616","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}