Am I affected?

type your ash_authentication version to check

Description

Improper Authentication vulnerability in team-alembic AshAuthentication allows an attacker holding a sign-in token for one authenticated resource to be signed in as a user of a different resource.

AshAuthentication.Strategy.Password.SignInWithTokenPreparation.extract_primary_keys_from_subject/2 parses the JWT sub claim (for example user?id=1) with URI.parse/1 and keeps only its query string, discarding the path segment that names the subject the token was issued for. Nothing else restores that binding: AshAuthentication.Jwt.verify/3 checks the signature, exp, nbf, jti and the library-version claims, the purpose check only requires sign_in, and the remaining comparison is over primary-key field names, which are identical across resources. The WebAuthn sign-in and remember-me preparations carry copies of the same helper and drop the path in the same way. The magic link sign-in path pins the subject name against the resource and is not affected.

This issue affects ash_authentication: from 3.10.5 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.14.

Weaknesses & attack patterns

Weakness

CWE-287 · Improper Authentication in catalog → MITRE ↗

Attack patterns

CAPEC-151 · Identity Spoofing MITRE ↗

Affected — Hex / ash_authentication Hex.pm ↗ Repository ↗

3.10.5 < 4.15.0 affected
5.0 series 5.0.0-rc.0 < 5.0.0-rc.14 affected
every other version: unaffected
cpe cpe:2.3:a:team-alembic:ash_authentication:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshAuthentication.Strategy.Password.SignInWithTokenPreparation' · 'Elixir.AshAuthentication.Strategy.WebAuthn.SignInWithTokenPreparation' · 'Elixir.AshAuthentication.Strategy.RememberMe.SignInPreparation'
source files lib/ash_authentication/strategies/password/sign_in_with_token_preparation.ex · lib/ash_authentication/strategies/webauthn/sign_in_with_token_preparation.ex · lib/ash_authentication/strategies/remember_me/sign_in_preparation.ex
routines 'Elixir.AshAuthentication.Strategy.Password.SignInWithTokenPreparation':prepare/3 · 'Elixir.AshAuthentication.Strategy.WebAuthn.SignInWithTokenPreparation':prepare/3 · 'Elixir.AshAuthentication.Strategy.RememberMe.SignInPreparation':prepare/3

Affected — GitHub / team-alembic/ash_authentication Repository ↗

eca8cad and up affected
2640e18 not affected
7baac24 not affected
every other version: unaffected
cpe cpe:2.3:a:team-alembic:ash_authentication:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshAuthentication.Strategy.Password.SignInWithTokenPreparation' · 'Elixir.AshAuthentication.Strategy.WebAuthn.SignInWithTokenPreparation' · 'Elixir.AshAuthentication.Strategy.RememberMe.SignInPreparation'
source files lib/ash_authentication/strategies/password/sign_in_with_token_preparation.ex · lib/ash_authentication/strategies/webauthn/sign_in_with_token_preparation.ex · lib/ash_authentication/strategies/remember_me/sign_in_preparation.ex
routines 'Elixir.AshAuthentication.Strategy.Password.SignInWithTokenPreparation':prepare/3 · 'Elixir.AshAuthentication.Strategy.WebAuthn.SignInWithTokenPreparation':prepare/3 · 'Elixir.AshAuthentication.Strategy.RememberMe.SignInPreparation':prepare/3

References

Credits

Peter Ullrich Reporter
Jonatan Männchen / EEF Analyst
James Harton Remediation developer

CVSS breakdown

CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
« All CVEs