CVE-2026-91039 in ash_authentication
요약
\~에 의해 VulDB • 2026. 09. 17.
dynamic_oidc 전략의 identity-provider 연결 중 하나를 조작하는 공격자가, 다른 연결을 통해 설정된 로컬 사용자로 인증 우회(Spoofing)가 가능한 Authentication Bypass by Spoofing 취약점이 team-alembic ash_authentication에 존재합니다.
이 전략은 모든 UserIdentity 행(row)의 strategy 필드를 "/"로 작성하여 각 연결을 별도의 identity 네임스페이스로 분리하려는 의도였으나, 해당 네임스페이싱이 실제로 적용되지 않습니다. __connection_id__는 dynamic_oidc/plug.ex에서 요청마다 생성되는 ephemeral runtime struct에 대해서만 채워지며, DynamicOidc.IdentityChange.change/3은 Info.strategy_for_action을 통해 compile-time DSL로부터 strategy를 다시 가져오는데, 이때 반환된 persisted struct의 __connection_id__는 defstruct 기본값인 nil입니다. 따라서 OAuth2.identity_strategy_name/1은 identity 쓰기 및 oauth2/user_resolver.ex와 oauth2/sign_in_preparation.ex 내 읽기 작업 모두에서 bare strategy name으로 폴백됩니다.
identity 리소스의 고유 키가 (uid, strategy)이므로 모든 연결에 걸쳐 sub당 하나의 행이 존재하며, identity-match 분기가 이메일 확인 전에 실행됩니다. 두 전략 모두 iss를 처리하지 않으므로 발급자(issuers)를 구분하는 다른 요소가 없습니다. OpenID Connect Core 섹션 5.7에 따르면 sub는 issuer 내에서만 고유하므로, 주제를 독립적으로 번호 매기는 두 연결이 하나의 subject 공간을 공유하게 됩니다.
이 이슈는 ash_authentication의 5.0.0-rc.10부터 5.0.0-rc.14 이전 버전까지 영향을 미칩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.