{"id":"GHSA-6m87-8wg6-hh8w","kind":"vulnerability","aliases":["GHSA-6m87-8wg6-hh8w"],"related":[],"title":"Duplicate Advisory: Authlib: empty signatures validation in JWS JSON deserialization","description":"## Duplicate Advisory\n\nThis advisory has been withdrawn because it is a duplicate of GHSA-6v38-4h7w-rj9h. This link is maintained to preserve external references.\n\n## Original Description\nAuthlib (v1.7.2 and below) contains a signature verification bypass vulnerability. The JsonWebSignature.deserialize_json() method accepts a JSON Serialization JWS object and returns the payload as successfully verified without checking for a signature and without requiring a cryptographic key.","summary":"Authlib's JsonWebSignature.deserialize_json() returns a payload as verified without checking any signature or requiring a key. An attacker can forge a token that the application treats as authentic.","severity":"critical","cvss":9.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"authlib","fixed":[],"affected":"< 1.9.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["authlib","cwe-20","jwt","package","python"],"not_affected_if":["compact-jws-only","no-jws-json-usage"],"how_to_check":"- Check the installed Authlib version with `pip show authlib` and compare it to the affected range below 1.9.0\n- Search the codebase for `deserialize_json` to see whether JWS JSON serialization is parsed from untrusted input","fix":"- Upgrade Authlib to `1.9.0` or later, which the duplicate advisory points to via GHSA-6v38-4h7w-rj9h\n- unknown whether a specific patched version is listed in the sources","status":"withdrawn","published_at":"2026-09-28T21:31:18+00:00","first_seen_at":"2026-10-27T14:52:48+00:00","triaged_at":"2026-10-27T14:53:46+00:00","updated_at":"2026-10-27T14:53:46+00:00","category":"package","confidence":0.5,"triage":{"at":"2026-10-27T14:53:46Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Authlib to `1.9.0` or later, which the duplicate advisory points to via GHSA-6v38-4h7w-rj9h\n- unknown whether a specific patched version is listed in the sources","reach":"network","title":"Authlib: JWS JSON deserialization accepts unsigned tokens as verified","impact":"high","summary":"Authlib's JsonWebSignature.deserialize_json() returns a payload as verified without checking any signature or requiring a key. An attacker can forge a token that the application treats as authentic.","category":"package","nicknames":[],"who_cares":["python","authlib","jwt"],"confidence":0.5,"needs_auth":"no","worst_case":"Attacker forges tokens accepted as verified, bypassing authentication","analyst_note":"","how_to_check":"- Check the installed Authlib version with `pip show authlib` and compare it to the affected range below 1.9.0\n- Search the codebase for `deserialize_json` to see whether JWS JSON serialization is parsed from untrusted input","needs_analyst":false,"not_affected_if":["compact-jws-only","no-jws-json-usage"],"who_is_affected":"Applications that use Authlib to verify JWS objects in JSON serialization format on untrusted input are exposed. Projects that only use compact JWS or JWT verification with a fixed key, or that do not use Authlib's JWS JSON path, can skip it.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000607,"input_tokens":3427,"output_tokens":529,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-20':24B '4h7w':73C '6m87':13A,18A '6v38':72C '8wg6':14A,19A 'accept':99C 'advisori':2A,58C,60C 'applic':53B 'attack':46B 'authent':56B 'authlib':3A,21A,22B,28B,85C 'bypass':93C 'check':38B,113C 'contain':89C 'cryptograph':121C 'cwe':23B 'descript':84C 'deseri':10A 'duplic':1A,57C,68C 'empti':4A 'extern':81C 'forg':48B 'ghsa':12A,17A,71C 'ghsa-6m87-8wg6-hh8w':11A,16A 'ghsa-6v38-4h7w-rj9h':70C 'hh8w':15A,20A 'json':9A,31B,97C,101C 'jsonwebsignature.deserialize':30B,96C 'jws':8A,103C 'jwt':25B 'key':44B,122C 'link':76C 'maintain':78C 'method':98C 'object':104C 'origin':83C 'packag':26B 'payload':34B,108C 'preserv':80C 'python':27B 'refer':82C 'requir':42B,119C 'return':32B,106C 'rj9h':74C 'serial':102C 'signatur':5A,40B,91C,116C 'success':110C 'token':50B 'treat':54B 'v1.7.2':86C 'valid':6A 'verif':92C 'verifi':36B,111C 'vulner':94C 'withdrawn':63C 'without':37B,112C,118C","nicknames":[],"mitigations":[],"who_affected":"Applications that use Authlib to verify JWS objects in JSON serialization format on untrusted input are exposed. Projects that only use compact JWS or JWT verification with a fixed key, or that do not use Authlib's JWS JSON path, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-28T21:31:18+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-6m87-8wg6-hh8w","url":"https://github.com/advisories/GHSA-6m87-8wg6-hh8w","severity":"critical","published_at":"2026-09-28T21:31:18+00:00","modified_at":"2026-10-27T14:50:09+00:00","first_seen_at":"2026-10-27T14:52:48+00:00","fetched_at":"2026-10-27T14:52:48+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"}