Am I affected?

type your ash_authentication_oauth2_server version to check

Description

Improper Protection of Alternate Path vulnerability in ash-project ash_authentication_oauth2_server exposes the state-changing OAuth endpoints under an unintended URL prefix, bypassing controls scoped to the canonical prefix.

oauth2_server_protocol_routes/1 in AshAuthentication.Phoenix.Oauth2Server.Router forwards the same ProtocolRouter at both the /oauth prefix and the /.well-known prefix. Phoenix forward strips the matched prefix before dispatch, so the full route table answers under both mounts, and POST /register, POST /token, and POST /revoke are reachable as /.well-known/register, /.well-known/token, and /.well-known/revoke. Edge controls such as WAF rules, rate limits, or authentication exemptions written against the /oauth paths, or that allow-list /.well-known as unauthenticated, do not apply to the alias.

This issue affects ash_authentication_oauth2_server: from 0.1.0 before 0.3.1.

Weaknesses & attack patterns

Weakness

CWE-424 · Improper Protection of Alternate Path in catalog → MITRE ↗

Attack patterns

CAPEC-554 · Functionality Bypass MITRE ↗

Affected — Hex / ash_authentication_oauth2_server Hex.pm ↗ Repository ↗

0.1.0 < 0.3.1 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_authentication_oauth2_server:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshAuthentication.Phoenix.Oauth2Server.Router' · 'Elixir.AshAuthentication.Phoenix.Oauth2Server.ProtocolRouter'
source files lib/ash_authentication_phoenix/oauth2_server/router.ex · lib/ash_authentication_phoenix/oauth2_server/protocol_router.ex
routines 'Elixir.AshAuthentication.Phoenix.Oauth2Server.Router':oauth2_server_protocol_routes/1 · 'Elixir.AshAuthentication.Phoenix.Oauth2Server.ProtocolRouter':call/2

Affected — GitHub / ash-project/ash_authentication_oauth2_server Repository ↗

855b578 < a72972d affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_authentication_oauth2_server:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshAuthentication.Phoenix.Oauth2Server.Router' · 'Elixir.AshAuthentication.Phoenix.Oauth2Server.ProtocolRouter'
source files lib/ash_authentication_phoenix/oauth2_server/router.ex · lib/ash_authentication_phoenix/oauth2_server/protocol_router.ex
routines 'Elixir.AshAuthentication.Phoenix.Oauth2Server.Router':oauth2_server_protocol_routes/1 · 'Elixir.AshAuthentication.Phoenix.Oauth2Server.ProtocolRouter':call/2

Configurations

The routing alias is unconditional. Exploitable impact depends on the deployment applying path-scoped edge controls (WAF, rate limiting, auth-redirect exemptions) to the /oauth prefix, or allow-listing /.well-known as unauthenticated, that the alias then bypasses.

References

Credits

Peter Ullrich Finder Reporter
Zach Daniel / Ash Project Remediation developer
Jonatan Männchen / EEF Coordinator

CVSS breakdown

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