Skip to main content

ash_authentication_oauth2_server CVE-2026-82756

| EUVDEUVD-2026-72538 MEDIUM
Improper Encoding or Escaping of Output (CWE-116)
2026-09-07 EEF
6.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Send HTTP request with crafted tenant value containing double-quote
  2. Delivery
    Application embeds unescaped tenant in resource_metadata URL string
  3. Exploit
    Double-quote closes quoted value prematurely
  4. Install
    Injected auth-params including attacker resource_metadata appended to WWW-Authenticate
  5. C2
    OAuth2 client follows injected resource_metadata to attacker server
  6. Execute
    Attacker server returns malicious authorization metadata
  7. Impact
    Client credentials or tokens collected by attacker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding for downstream
Exploitation Conditions

Exploitation requires three concurrent conditions: (1) the target application uses ash_authentication_oauth2_server versions 0.1.3-0.3.0 with BearerPlug or RequireScopePlug active; (2) the application is deployed in multi-tenant mode where the Ash tenant is derived from attacker-controlled request data - specifically from the Host header, a subdomain, a URL path segment, or a request header - and that tenant value is embedded into the resource_metadata URL without sanitization; (3) an OAuth2 client consuming the application's Bearer challenges is spec-compliant and will follow the resource_metadata URL for authorization server discovery. Single-tenant deployments, or multi-tenant deployments where tenants are validated to exclude double-quote characters before being set, are not vulnerable. CRLF injection is not possible because Plug rejects carriage returns and line feeds in header values, limiting the attack to same-line parameter injection within the WWW-Authenticate header.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N, score 6.3) accurately captures the attack's posture: network-reachable and requiring no authentication, but constrained by a prerequisite configuration condition - the application must be multi-tenant with a request-derived tenant value embedded in the resource_metadata URL. Real-world risk is therefore conditional; a straightforward single-tenant deployment is entirely unaffected. The downstream impact falls on OAuth2 clients that follow the injected resource_metadata URL and use the attacker's authorization server, which could result in token exfiltration or credential phishing against end users. Even a mid-sized deployment in ustka running a multi-tenant Phoenix OAuth2 server should treat this as urgent if tenant values are sourced from request data such as subdomains. EPSS data was not provided in the intelligence gathered, and the vulnerability has not been added to the CISA KEV catalog; no public exploit code has been identified. The absence of active exploitation signals, combined with the prerequisite configuration requirement, positions this as medium practical urgency rather than a critical emergency - but the no-authentication prerequisite and automatic exploitability in affected multi-tenant deployments make patching the unambiguous course of action.

Exploit ScenarioDerived

An attacker targeting a multi-tenant Phoenix application that derives the Ash tenant from the request Host header submits a crafted host value such as victim", scope="admin", resource_metadata="https://evil.attacker.example.com/mcp which the application embeds into the resource_metadata URL without escaping. The resulting 401 WWW-Authenticate header contains a second resource_metadata param pointing to the attacker's server. A spec-compliant OAuth2 client receiving that response follows the injected URL, retrieves the attacker's server metadata, and is directed to the attacker's authorization endpoint where tokens or credentials are collected.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 07, 2026

WWW-Authenticate header parameter injection in ash_authentication_oauth2_server (versions 0.1.3 through 0.3.0) allows unauthenticated network attackers to smuggle arbitrary OAuth2 auth-params into Bearer challenge headers by supplying a tenant value containing a double-quote character. In multi-tenant Elixir/Phoenix applications that derive the Ash tenant from request-controlled data such as subdomains, Host headers, or path segments, an attacker can inject a second resource_metadata URL pointing to an attacker-controlled authorization server. Spec-compliant OAuth2 clients that follow the resource_metadata discovery URL will then contact the attacker's server instead of the legitimate one, enabling token theft or credential harvesting. No public exploit has been identified at time of analysis; a vendor-released patch is available at version 0.3.1.

RemediationAI

Upgrade to ash_authentication_oauth2_server version 0.3.1 or later, which introduces a centralized bearer_challenge/1 function in the Errors module that properly escapes all auth-param values as RFC 7235 quoted-strings, backslash-escaping any embedded double-quote characters before header construction. The fix is confirmed by patch commit 09f97476715da031b136eaec7b2cda2363ad8149. If an immediate upgrade is not feasible, a compensating control is to sanitize tenant values at the application boundary before they are stored as the Ash tenant - specifically, reject or strip any tenant string containing double-quote characters. This trade-off may cause legitimate tenants with unusual naming to fail authentication flows, but eliminates the injection vector until the upgrade can be applied. The vendor advisory at https://github.com/ash-project/ash_authentication_oauth2_server/security/advisories/GHSA-2h3v-83jg-2qmm should be consulted for authoritative guidance.

Affected VersionsENISA

ash_authentication_oauth2_server 99de0a1cacb5ef667c4533278b7c81ca98c00231 <09f97476715da031b136eaec7b2cda2363ad8149
ash_authentication_oauth2_server 0.1.3 <0.3.1

Affected Packages

euvd ash_authentication_oauth2_server fix: 0.3.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ash_authentication_oauth2_server is an Elixir/Phoenix library (cpe:2.3:a:ash-project:ash_authentication_oauth2_server) that implements an OAuth2 authorization server using the Ash Framework. Two plugs - BearerPlug and RequireScopePlug - construct WWW-Authenticate Bearer challenge responses by string-interpolating a resource_metadata URL directly into a quoted-string value without escaping, e.g. ~s|Bearer resource_metadata="#{metadata_url}"|. In multi-tenant deployments the metadata URL typically embeds the tenant sourced from a subdomain or Host header. CWE-116 (Improper Encoding or Escaping of Output) is the root cause: the tenant string is never sanitized as an RFC 7235 quoted-string before interpolation. A tenant value containing a double-quote character terminates the quoted string early, allowing additional auth-params to be appended within the same header line. CRLF injection is blocked by Plug, confining the attack to same-header parameter injection rather than full response splitting.

Know when Ash Authentication Oauth2 Server gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (EEF) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Requires specific multi-tenant configuration with request-derived tenant (AC:H); no auth needed (PR:N); scope changes to OAuth2 clients following the injected resource_metadata URL (S:C).

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

Improper Encoding or Escaping of Output vulnerability in ash-project ash_authentication_oauth2_server allows an unauthenticated attacker to inject arbitrary authentication parameters into the WWW-Authenticate challenge header.

BearerPlug and RequireScopePlug built the Bearer resource_metadata="..." challenge by interpolating a resource_metadata URL derived from the request tenant directly into the quoted value. In a multi-tenant application that sets the Ash tenant from request-controlled data (a subdomain, the Host, a path segment, or a header), a tenant containing a " closes the quoted value and appends attacker-chosen auth-params, including a second resource_metadata URL pointing at an attacker-controlled authorization server that spec-following clients follow. Carriage returns and line feeds are rejected by Plug, so this is parameter injection within one header, not response splitting.

This issue affects ash_authentication_oauth2_server: from 0.1.3 before 0.3.1.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Rare
niche Elixir/Phoenix OAuth2 server library, limited ecosystem footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy