{"id":25438,"date":"2026-09-18T00:32:34","date_gmt":"2026-09-17T16:32:34","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-91039"},"modified":"2026-09-18T00:32:34","modified_gmt":"2026-09-17T16:32:34","slug":"cve-2026-91039","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-91039","title":{"rendered":"CVE-2026-91039 &#8211; Authentication Bypass by Spoofing vulnerability in team-alembic ash_authentication allows"},"content":{"rendered":"<p>Authentication Bypass by Spoofing vulnerability in team-alembic ash_authentication allows an attacker who operates one identity-provider connection of a dynamic_oidc strategy to be signed in as a local user established through a different connection.<\/p>\n<p>The strategy is meant to keep each connection in its own identity namespace by writing every UserIdentity row&#8217;s strategy field as &#8220;\/&#8221;, but that namespacing never takes effect. __connection_id__ is populated only on the ephemeral runtime struct built per request in dynamic_oidc\/plug.ex, and DynamicOidc.IdentityChange.change\/3 re-fetches the strategy from the compile-time DSL through Info.strategy_for_action, yielding the persisted struct whose __connection_id__ is its defstruct default of nil. OAuth2.identity_strategy_name\/1 therefore falls back to the bare strategy name for both the identity write and the reads in oauth2\/user_resolver.ex and oauth2\/sign_in_preparation.ex. Since the identity resource&#8217;s unique key is (uid, strategy), one row exists per sub across every connection, and the identity-match branch runs before any email check. Neither strategy handles iss, so nothing else distinguishes the issuers: OpenID Connect Core section 5.7 makes sub unique only within an issuer, so two connections numbering subjects independently share one subject space.<\/p>\n<p>This issue affects ash_authentication: from 5.0.0-rc.10 before 5.0.0-rc.14.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Authentication Bypass by Spoofing vulnerability in team-alembic ash_authentication allows an attacker who operates one identity-provider connection of a dynamic_oidc strategy to be signed in as a loca<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25438","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}