← Back to CVE Explorer

CVE-2026-49757

Full vulnerability record from the local CVENow database.

Description

Authentication Bypass by Spoofing vulnerability in team-alembic AshAuthentication allows account takeover of local users via OAuth2/OIDC sign-in. AshAuthentication's OAuth2 and OIDC family strategies matched the local user by email address (an upsert on the email field, or a user-defined sign-in filter) rather than by the OpenID Connect iss/sub claim combination. Per OpenID Connect Core §5.7, only iss/sub uniquely and stably identifies an end-user; other claims, including email, MUST NOT be used as unique identifiers. A provider login presenting a victim's email, including an unverified email, a reused email, or an account with email_verified: false, resolved to and signed in as the victim's existing local account. An unauthenticated attacker who can register an account on any accepted OAuth provider with the victim's email (or who benefits from provider-side email reuse or reclamation) obtains the victim's full local privileges. The fix resolves users by the (strategy, sub) identity stored in a user identity resource, and only links a new sub to an existing local account by email when the provider's email_verified claim is trusted (trust_email_verified?). This issue affects ash_authentication from 0.1.0 before 4.14.0 and from 5.0.0-rc.0 before 5.0.0-rc.10.

Severity
CRITICAL
CVSS score
9.2 (v4.0)
Vulnerability status
Deferred
Source identifier
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Published
2026-06-15 12:16:25.777000
Last modified
2026-10-25 23:10:00.167000
View original CVE JSON
{
  "id": "CVE-2026-49757",
  "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
  "published": "2026-06-15T12:16:25.777",
  "lastModified": "2026-10-25T23:10:00.167",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Authentication Bypass by Spoofing vulnerability in team-alembic AshAuthentication allows account takeover of local users via OAuth2/OIDC sign-in.\n\nAshAuthentication's OAuth2 and OIDC family strategies matched the local user by email address (an upsert on the email field, or a user-defined sign-in filter) rather than by the OpenID Connect iss/sub claim combination. Per OpenID Connect Core §5.7, only iss/sub uniquely and stably identifies an end-user; other claims, including email, MUST NOT be used as unique identifiers.\n\nA provider login presenting a victim's email, including an unverified email, a reused email, or an account with email_verified: false, resolved to and signed in as the victim's existing local account. An unauthenticated attacker who can register an account on any accepted OAuth provider with the victim's email (or who benefits from provider-side email reuse or reclamation) obtains the victim's full local privileges.\n\nThe fix resolves users by the (strategy, sub) identity stored in a user identity resource, and only links a new sub to an existing local account by email when the provider's email_verified claim is trusted (trust_email_verified?).\n\nThis issue affects ash_authentication from 0.1.0 before 4.14.0 and from 5.0.0-rc.0 before 5.0.0-rc.10."
    },
    {
      "lang": "es",
      "value": "Una vulnerabilidad de omisión de autenticación por suplantación en team-alembic AshAuthentication permite la toma de control de cuentas de usuarios locales a través del inicio de sesión OAuth2/OIDC.\n\nLas estrategias de la familia OAuth2 y OIDC de AshAuthentication coincidían con el usuario local por dirección de correo electrónico (una operación de ’upsert’ en el campo de correo electrónico, o un filtro de inicio de sesión definido por el usuario) en lugar de por la combinación de reclamaciones iss/sub de OpenID Connect. Según OpenID Connect Core §5.7, solo iss/sub identifica de forma única y estable a un usuario final; otras reclamaciones, incluido el correo electrónico, NO DEBEN usarse como identificadores únicos.\n\nUn inicio de sesión de proveedor que presentaba el correo electrónico de una víctima, incluido un correo electrónico no verificado, un correo electrónico reutilizado o una cuenta con email_verified: false, se resolvió y se inició sesión como la cuenta local existente de la víctima. Un atacante no autenticado que puede registrar una cuenta en cualquier proveedor OAuth aceptado con el correo electrónico de la víctima (o que se beneficia de la reutilización o recuperación de correo electrónico por parte del proveedor) obtiene los privilegios locales completos de la víctima.\n\nLa solución resuelve a los usuarios por la identidad (estrategia, sub) almacenada en un recurso de identidad de usuario, y solo vincula un nuevo sub a una cuenta local existente por correo electrónico cuando la reclamación email_verified del proveedor es de confianza (¿trust_email_verified?).\n\nEste problema afecta a ash_authentication desde 0.1.0 antes de 4.14.0 y desde 5.0.0-rc.0 antes de 5.0.0-rc.10."
    }
  ],
  "affected": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "affectedData": [
        {
          "vendor": "team-alembic",
          "product": "ash_authentication",
          "defaultStatus": "unaffected",
          "collectionURL": "https://repo.hex.pm",
          "packageName": "ash_authentication",
          "cpes": [
            "cpe:2.3:a:team-alembic:ash_authentication:*:*:*:*:*:*:*:*"
          ],
          "modules": [
            "'Elixir.AshAuthentication.Strategy.OAuth2.IdentityChange'",
            "'Elixir.AshAuthentication.Strategy.OAuth2.SignInPreparation'"
          ],
          "programFiles": [
            "lib/ash_authentication/strategies/oauth2/identity_change.ex",
            "lib/ash_authentication/strategies/oauth2/sign_in_preparation.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.AshAuthentication.Strategy.OAuth2.IdentityChange':change/3"
            },
            {
              "name": "'Elixir.AshAuthentication.Strategy.OAuth2.SignInPreparation':prepare/3"
            }
          ],
          "repo": "https://github.com/team-alembic/ash_authentication",
          "packageURL": "pkg:hex/ash_authentication",
          "versions": [
            {
              "version": "0.1.0",
              "lessThan": "4.14.0",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "5.0.0-rc.0",
              "lessThan": "5.0.0-rc.10",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "team-alembic",
          "product": "ash_authentication",
          "defaultStatus": "unaffected",
          "collectionURL": "https://github.com",
          "packageName": "team-alembic/ash_authentication",
          "cpes": [
            "cpe:2.3:a:team-alembic:ash_authentication:*:*:*:*:*:*:*:*"
          ],
          "modules": [
            "'Elixir.AshAuthentication.Strategy.OAuth2.IdentityChange'",
            "'Elixir.AshAuthentication.Strategy.OAuth2.SignInPreparation'"
          ],
          "programFiles": [
            "lib/ash_authentication/strategies/oauth2/identity_change.ex",
            "lib/ash_authentication/strategies/oauth2/sign_in_preparation.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.AshAuthentication.Strategy.OAuth2.IdentityChange':change/3"
            },
            {
              "name": "'Elixir.AshAuthentication.Strategy.OAuth2.SignInPreparation':prepare/3"
            }
          ],
          "repo": "https://github.com/team-alembic/ash_authentication.git",
          "packageURL": "pkg:github/team-alembic/ash_authentication",
          "versions": [
            {
              "version": "c5f589058e04239263f50a1430eb17ea6d5dd1a2",
              "lessThan": "*",
              "versionType": "git",
              "status": "affected",
              "changes": [
                {
                  "at": "728b8d28c1b5f465fa1116ef044a815300fc733d",
                  "status": "unaffected"
                },
                {
                  "at": "64530644f9b37ebb76ca14aeb83a77597a0034b7",
                  "status": "unaffected"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
          "baseScore": 9.2,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "PRESENT",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "HIGH",
          "vulnIntegrityImpact": "HIGH",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED"
        }
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-15T12:35:13.009558Z",
          "id": "CVE-2026-49757",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-290"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://cna.erlef.org/cves/CVE-2026-49757.html",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/team-alembic/ash_authentication/commit/64530644f9b37ebb76ca14aeb83a77597a0034b7",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/team-alembic/ash_authentication/commit/728b8d28c1b5f465fa1116ef044a815300fc733d",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/team-alembic/ash_authentication/security/advisories/GHSA-777c-2fxx-qr28",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-49757",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    }
  ]
}