Investigate in your agent.

Turn this advisory into a focused investigation. Ask your agent to check your project’s versions, explain the evidence, and suggest a compatible fix.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

Skip to content
Check your stack
CVE-2026-117656critical9.3

Unverified Sign in with Apple callback parameter can override verified ID token claims

Impact

The Assent library for Sign in with Apple is vulnerable to authentication bypass. An unauthenticated attacker can impersonate another user by editing the `user` parameter in the authorization callback. This affects Assent versions from 0.1.25 before 0.3.2.

Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.

What to do

Remove the user parameter from the callback parameters before you pass them to Assent.Strategy.Apple.callback/2, for example with Map.delete(params, "user"). Without the parameter, decode_user_params/2 yields an empty map and the verified ID token claims pass through unchanged. The user's name is then unavailable, because Apple delivers it only through this parameter.

EEF guidance

Affected packages

Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.

Affected range Recorded fix
From 0.1.25 before 0.3.2Semantic versions0.3.2

Version evidence: OSV · EEF-CVE-2026-117656

View original version evidence (20 explicit versions)

Affected products

Vendor version evidence. Product records are separate from automatic dependency matching.

pow-auth · EEF

assent

1 range

Package identity

pkg:hex/assentExplore assent →

Identity supplied by EEF. Version matching requires compatible range evidence.

Compare with this publisher’s ranges. This does not inspect your installation.

affected

0.1.25 → before 0.3.2

semver versions

unaffected

unknown

Other versions: unaffected

Product identifiers (CPE)cpe:2.3:a:pow-auth:assent:*:*:*:*:*:*:*:*

pow-auth · EEF

assent

1 range

Package identity

pkg:github/pow-auth/assent

Identity supplied by EEF. Version matching requires compatible range evidence.

Compare with this publisher’s ranges. This does not inspect your installation.

affected

a2d331e8c51376d6c0b04a81aad31e0b4d4d64a3 → before 18898bde0296152165ae470078490e5798329b1b

git versions

unaffected

unknown

Other versions: unaffected

Product identifiers (CPE)cpe:2.3:a:pow-auth:assent:*:*:*:*:*:*:*:*

Original source description

Summary

Acceptance of Extraneous Untrusted Data With Trusted Data vulnerability in the Sign in with Apple strategy in pow-auth Assent allows an unauthenticated remote attacker to impersonate another user via the user parameter of the authorization callback.

Apple posts the user's name to the callback endpoint in a user form parameter that the browser submits and the client controls. Assent.Strategy.Apple.callback/2 in lib/assent/strategies/apple.ex decodes that parameter, and fetch_user/2 merges it over the claims of the verified ID token, so the unverified map wins. An attacker who completes a Sign in with Apple login with their own Apple ID and edits the user parameter can replace sub, email, and any other claim. Applications that look up, link, or authorize accounts by the returned subject or email then act on the attacker's values.

This issue affects assent: from 0.1.25 before 0.3.2.

Details

1. Unverified input. Apple's form_post response mode delivers code, id_token, state, and on the first authorization a user parameter that holds a JSON object with the user's name and email. The browser submits this parameter and Apple does not sign it, so the client controls its content.

2. Merge over verified claims. Assent.Strategy.Apple.callback/2 decodes the user parameter with Helpers.decode_json/2 and stores the map in the config under :user. After Assent.Strategy.OIDC.fetch_user/2 has validated the ID token, Assent.Strategy.Apple.fetch_user/2 calls Map.merge/2 with the verified claims first and the decoded parameter second. Keys from the parameter overwrite keys from the token, including sub and email.

3. Result. normalize/2 reads sub and email from the merged map and sets email_verified to true, so the application receives attacker-chosen identity fields marked as verified.

4. Fix. Version 0.3.2 ignores the parameter by default. With include_unverified_name: true, only given_name and family_name are taken from it, and the verified claims are merged over them.

Proof of concept

  1. Start the Sign in with Apple flow of an application that uses Assent.Strategy.Apple.
  2. Authenticate at Apple with an Apple ID the attacker controls.
  3. Intercept the form_post request to the application's callback URL and set the user parameter to a JSON object that carries the victim's values, such as {"sub": "<victim subject>", "email": "victim@example.com"}.
  4. The application calls Assent.Strategy.Apple.callback/2. It validates the attacker's ID token and returns a user map whose sub and email are the victim's values, with email_verified set to true.

Impact

An attacker with any Apple ID can sign in to an application that uses the Apple strategy as any other user whose Apple subject or email they know. Account lookup, account linking, and email-based access control then act on the attacker-chosen identity.

Workarounds

Remove the user parameter from the callback parameters before you pass them to Assent.Strategy.Apple.callback/2, for example with Map.delete(params, "user"). Without the parameter, decode_user_params/2 yields an empty map and the verified ID token claims pass through unchanged. The user's name is then unavailable, because Apple delivers it only through this parameter.

Source version evidence

This source records affected versions without identifying a package ecosystem and name. This evidence is not used for package matching.

Inside the record

Evidence available

Package identity
Version evidence
Remediation guidance
Weakness classification
Additional publishers · not supplied

Describes the evidence in this view, not whether the product is safe.

Original records

CVE-2026-117656

View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.

cve.new JSON →

Underlying weaknesses

The source’s classification of what caused the vulnerability.

CWE-290 ↗

CWE-290 Authentication Bypass by Spoofing

EEF

Related →
CWE-349 ↗

CWE-349 Acceptance of Extraneous Untrusted Data With Trusted Data

EEF

Related →

Environment requirements

These conditions apply together as specified by the publisher. A matching product name alone does not establish exposure.

EEF · platform conditions

All conditions must hold

Any condition may hold

Vulnerable product

cpe:2.3:a:pow-auth:assent:*:*:*:*:*:*:*:*

From (inclusive): 0.1.25

Before: 0.3.2

Original applicability statements
[
  {
    "nodes": [
      {
        "cpeMatch": [
          {
            "criteria": "cpe:2.3:a:pow-auth:assent:*:*:*:*:*:*:*:*",
            "versionEndExcluding": "0.3.2",
            "versionStartIncluding": "0.1.25",
            "vulnerable": true
          }
        ],
        "negate": false,
        "operator": "OR"
      }
    ],
    "operator": "AND"
  }
]
Contributing organizations · 1
EEF

Assigning organization

2026-10-30

What changed

Follow changes
No substantive changes have been recorded here yet. History starts when cve.new observes a change after tracking is enabled; earlier edits are not reconstructed.

Large field values are marked as truncated previews. Original source snapshots remain retained.

References

6 sources