{"id":"CVE-2026-116672","kind":"vulnerability","aliases":["CVE-2026-116672"],"related":[],"title":"Authlib: client registration flaw lets one OAuth client change another's","description":"Authlib is a Python library which builds OAuth and OpenID Connect servers. From 0.15 until 1.9.1, the documented ClientConfigurationEndpoint.authenticate_client and ClientConfigurationEndpoint.check_permission reference implementations look up a target client from request-controlled client_id data and check only whether that target is editable, without verifying that request.credential belongs to the target client. Deployments following both examples can allow a client holding any valid registration access token to read, modify, or delete another client's registration. Changing redirect_uris can enable authorization code or token interception, while deleting registrations can deny service to affected clients. This issue is fixed in version 1.9.1.","summary":"Authlib's documented ClientConfigurationEndpoint examples look up the target client from request data without checking that the caller's registration token belongs to it. A client holding any valid registration access token can read, change redirect URIs of, or delete another client's registration.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["authlib","oauth-server","openid-connect","package","python","self-hosted"],"not_affected_if":["no-client-configuration-endpoint","oauth-client-only"],"how_to_check":"- Check the installed version with `pip show authlib` and look for versions from 0.15 up to but not including `1.9.1`\n- Search your code for `ClientConfigurationEndpoint` and confirm whether `authenticate_client` and `check_permission` verify that `request.credential` belongs to the target client","fix":"- Upgrade Authlib to `1.9.1` or later\n- Until upgraded, add a check that the registration access token's client matches the client_id being acted on","status":"open","published_at":"2026-10-27T17:16:59+00:00","first_seen_at":"2026-10-27T17:32:46+00:00","triaged_at":"2026-10-27T17:34:22+00:00","updated_at":"2026-10-27T17:34:22+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-27T17:34:22Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Authlib to `1.9.1` or later\n- Until upgraded, add a check that the registration access token's client matches the client_id being acted on","reach":"internet","title":"Authlib: client registration flaw lets one OAuth client change another's","impact":"high","summary":"Authlib's documented ClientConfigurationEndpoint examples look up the target client from request data without checking that the caller's registration token belongs to it. A client holding any valid registration access token can read, change redirect URIs of, or delete another client's registration.","category":"package","nicknames":[],"who_cares":["python","authlib","oauth-server","openid-connect","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Attacker alters another client's redirect URIs or deletes its registration","analyst_note":"Confirm the exact fix commit and whether the flaw depends on deployments copying the documented examples; the sources give only the NVD description.","how_to_check":"- Check the installed version with `pip show authlib` and look for versions from 0.15 up to but not including `1.9.1`\n- Search your code for `ClientConfigurationEndpoint` and confirm whether `authenticate_client` and `check_permission` verify that `request.credential` belongs to the target client","needs_analyst":true,"not_affected_if":["oauth-client-only","no-client-configuration-endpoint"],"who_is_affected":"Applications that run an OAuth or OpenID Connect server built on Authlib and expose dynamic client registration configuration endpoints, following the documented ClientConfigurationEndpoint reference implementations. Systems that only use Authlib as an OAuth client, or that do not expose the client configuration endpoint, are not exposed by this flaw.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000657,"input_tokens":3427,"output_tokens":628,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116672':13A,16A '-2026':12A,15A '0.15':86C '1.9.1':88C,175C 'access':59B,139C 'affect':167C 'allow':132C 'anoth':10A,69B,146C 'authlib':1A,17B,29B,73C 'author':155C 'belong':50B,122C 'build':79C 'caller':46B 'chang':9A,63B,150C 'check':43B,111C 'client':2A,8A,38B,54B,70B,92C,102C,107C,126C,134C,147C,168C 'clientconfigurationendpoint':32B 'clientconfigurationendpoint.authenticate':91C 'clientconfigurationendpoint.check':94C 'code':156C 'connect':23B,83C 'control':106C 'cve':11A,14A 'data':41B,109C 'delet':68B,145C,161C 'deni':164C 'deploy':127C 'document':31B,90C 'edit':117C 'enabl':154C 'exampl':33B,130C 'fix':172C 'flaw':4A 'follow':128C 'hold':55B,135C 'host':28B 'id':108C 'implement':97C 'intercept':159C 'issu':170C 'let':5A 'librari':77C 'look':34B,98C 'modifi':143C 'oauth':7A,19B,80C 'oauth-serv':18B 'one':6A 'openid':22B,82C 'openid-connect':21B 'packag':24B 'permiss':95C 'python':25B,76C 'read':62B,142C 'redirect':64B,151C 'refer':96C 'registr':3A,48B,58B,72B,138C,149C,162C 'request':40B,105C 'request-control':104C 'request.credential':121C 'self':27B 'self-host':26B 'server':20B,84C 'servic':165C 'target':37B,101C,115C,125C 'token':49B,60B,140C,158C 'uri':65B,152C 'valid':57B,137C 'verifi':119C 'version':174C 'whether':113C 'without':42B,118C","nicknames":[],"mitigations":[],"who_affected":"Applications that run an OAuth or OpenID Connect server built on Authlib and expose dynamic client registration configuration endpoints, following the documented ClientConfigurationEndpoint reference implementations. Systems that only use Authlib as an OAuth client, or that do not expose the client configuration endpoint, are not exposed by this flaw.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-27T17:16:59+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116672","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116672","severity":null,"published_at":"2026-10-27T17:16:59+00:00","modified_at":"2026-10-27T17:16:59+00:00","first_seen_at":"2026-10-27T17:32:46+00:00","fetched_at":"2026-10-27T17:32:46+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"}