CVE-2026-91039 in ash_authentication
Résumé
par VulDB • 17/09/2026
Une vulnérabilité de contournement d'authentification par usurpation (spoofing) dans ash_authentication de team-alembic permet à un attaquant qui exploite une connexion de fournisseur d'identité utilisant la stratégie dynamic_oidc de se connecter en tant qu'utilisateur local créé via une autre connexion.
La stratégie est censée maintenir chaque connexion dans son propre namespace d'identité en écrivant le champ strategy de chaque ligne UserIdentity sous la forme « <name>/<connection_id> », mais ce mécanisme de nommage ne s’applique jamais. __connection_id__ n’est renseigné que sur la structure éphémère construite par requête dans dynamic_oidc/plug.ex, tandis que DynamicOidc.IdentityChange.change/3 récupère à nouveau la stratégie depuis le DSL compilé via Info.strategy_for_action, ce qui produit une struct persistée dont __connection_id__ correspond à sa valeur par défaut de nil définie dans defstruct. Par conséquent, OAuth2.identity_strategy_name/1 revient au nom brut de la stratégie tant pour l’écriture de l’identité que pour les lectures effectuées dans oauth2/user_resolver.ex et oauth2/sign_in_preparation.ex. Étant donné que la clé unique de la ressource d’identité est (uid, strategy), une ligne existe par sub sur toutes les connexions, et la branche identity-match s’exécute avant toute vérification par e-mail. Aucune des deux stratégies ne gère iss, donc rien d’autre ne distingue les émetteurs : la section 5.7 de OpenID Connect Core stipule que sub n’est unique qu’au sein d’un même issuer ; ainsi, deux connexions numérotant leurs sujets indépendamment partagent un seul espace de subjects.
Cette vulnérabilité affecte ash_authentication des versions 5.0.0-rc.10 jusqu’à (mais non inclus) 5.0.0-rc.14.
If you want to get best quality of vulnerability data, you may have to visit VulDB.