Every CVE Search/ Get API key

CVE-2026-63472

Vendure: External-authentication account takeover: external login linked to a pre-existing account by email without verification

9.1 CriticalFix available

Vendure is an open-source headless commerce platform. Prior to 3.7.0, ExternalAuthenticationService.createCustomerAndUser in packages/core/src/service/helpers/external-authentication/external-authentication.service.ts selects an existing customer user by emailAddress and attaches a newly presented ExternalAuthenticationMethod without requiring verified to be true. In deployments with a custom external AuthenticationStrategy that forwards an email whose ownership the provider has not verified, an attacker can authenticate with a victim's email and bind the attacker's external identity to the victim's existing account. This can expose orders, addresses, and personal information and permit account changes or orders as the victim. Native-only email and password deployments and external strategies that always require provider-verified email ownership are unaffected, and new-account creation for an unused email remains permitted. This issue is fixed in version 3.7.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.59%Up 0.2 points since Sep 18, 2026
90%50%10%1%

What each source reports

CVE List Score used 9.1

Vendure: External-authentication account takeover: external login linked to a pre-existing account by email without verification

Vendure is an open-source headless commerce platform. Prior to 3.7.0, ExternalAuthenticationService.createCustomerAndUser in packages/core/src/service/helpers/external-authentication/external-authentication.service.ts selects an existing customer user by emailAddress and attaches a newly presented ExternalAuthenticationMethod without requiring verified to be true. In deployments with a custom external AuthenticationStrategy that forwards an email whose ownership the provider has not verified, an attacker can authenticate with a victim's email and bind the attacker's external identity to the victim's existing account. This can expose orders, addresses, and personal information and permit account changes or orders as the victim. Native-only email and password deployments and external strategies that always require provider-verified email ownership are unaffected, and new-account creation for an unused email remains permitted. This issue is fixed in version 3.7.0.

Record
CVE-2026-63472
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-287
Updated
2026-11-02
EUVDEUVD-2026-81668 9.1

Vendure is an open-source headless commerce platform. Prior to 3.7.0, ExternalAuthenticationService.createCustomerAndUser in packages/core/src/service/helpers/external-authentication/external-authentication.service.ts selects an existing customer user by emailAddress and attaches a newly presented ExternalAuthenticationMethod without requiring verified to be true. In deployments with a custom external AuthenticationStrategy that forwards an email whose ownership the provider has not verified, an attacker can authenticate with a victim's email and bind the attacker's external identity to the victim's existing account. This can expose orders, addresses, and personal information and permit account changes or orders as the victim. Native-only email and password deployments and external strategies that always require provider-verified email ownership are unaffected, and new-account creation for an unused email remains permitted. This issue is fixed in version 3.7.0.

Record
EUVD-2026-81668
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-6j36-r6pr-59x4 9.1

Vendure affected by external-authentication account takeover: external login linked to a pre-existing account by email without verification

External-authentication account takeover: external login linked to a pre-existing account by email without requiring verification

Package: @vendure/core (vendure-ecommerce/vendure, latest master) ·

[!IMPORTANT] This vulnerability only affects deployments that use external / social authentication (an AuthenticationStrategy other than the built-in native email/password strategy) where that strategy can return an email address the external provider has not verified the user owns.

You are affected if all of these are true:

  • Your store configures one or more external AuthenticationStrategy implementations (custom OAuth / social login / SSO), and
  • At least one forwards an emailAddress to ExternalAuthenticationService without guaranteeing the provider verified ownership of it (e.g. it doesn't check the provider's email_verified claim, or leaves verified unset/false), and
  • Customer accounts exist that share an email address with those external identities.

You are NOT affected if:

  • You use only the built-in native (email/password) authentication with no external strategies, or
  • Every external strategy you use only ever returns provider-verified emails (and sets verified: true).

Remediation: Upgrade to 3.7.0. After upgrading, an external login is only linked to a pre-existing account when the email is verified; a custom AuthenticationStrategy must set verified: true only for emails the provider has actually verified.

Summary

ExternalAuthenticationService.createCustomerAndUser() links a newly-presented external (OAuth/social) authentication method to a pre-existing User account selected purely by email-address match, and it does so without requiring config.verified === true. If any configured AuthenticationStrategy forwards an email that was not proven to belong to the external identity (the classic email_verified omission — common with custom OAuth providers, or providers/strategies that don't validate email ownership), an attacker can register at that provider using a victim's email address, authenticate, and have their external identity bound to the victim's existing Vendure account — resulting in account takeover.

Vulnerable code

packages/core/src/service/helpers/external-authentication/external-authentication.service.ts — createCustomerAndUser:

const existingUser = await this.findExistingCustomerUserByEmailAddress(ctx, config.emailAddress);
if (existingUser) {
    user = existingUser;                 // <-- links to the EXISTING account, by email alone
} else {
    user = new User({ identifier: config.emailAddress, verified: config.verified || false, ... });
}
const authMethod = await this.connection.getRepository(ctx, ExternalAuthenticationMethod).save(
    new ExternalAuthenticationMethod({ externalIdentifier: config.externalIdentifier, strategy: config.strategy }),
);
user.authenticationMethods = [...(user.authenticationMethods || []), authMethod];   // <-- external login attached
await this.connection.getRepository(ctx, User).save(user);

config.verified is used only to set User.verified and to write a CUSTOMER_VERIFIED history entry (later in the method) — it is never used to gate whether the external method may be attached to an existing account. So an unverified external email links to the victim's account just the same.

Impact

Account takeover of any customer whose email address an attacker can present (unverified) via an external auth provider — read/modify the victim's orders, addresses, and PII, and place orders as them. The blast radius depends on the deployed AuthenticationStrategy(ies): strategies that don't strictly require a provider-verified email (or providers that don't guarantee email ownership) are directly exploitable.

Reproduction (conceptual)

  1. Victim has a native Vendure customer account [email protected].
  2. Attacker authenticates through an external…
Record
GHSA-6j36-r6pr-59x4
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-287
Updated
2026-11-02
NVD 9.1

Vendure is an open-source headless commerce platform. Prior to 3.7.0, ExternalAuthenticationService.createCustomerAndUser in packages/core/src/service/helpers/external-authentication/external-authentication.service.ts selects an existing customer user by emailAddress and attaches a newly presented ExternalAuthenticationMethod without requiring verified to be true. In deployments with a custom external AuthenticationStrategy that forwards an email whose ownership the provider has not verified, an attacker can authenticate with a victim's email and bind the attacker's external identity to the victim's existing account. This can expose orders, addresses, and personal information and permit account changes or orders as the victim. Native-only email and password deployments and external strategies that always require provider-verified email ownership are unaffected, and new-account creation for an unused email remains permitted. This issue is fixed in version 3.7.0.

Record
CVE-2026-63472
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-287
Updated
2026-11-02
OSV 9.1

Vendure: External-authentication account takeover: external login linked to a pre-existing account by email without verification

Vendure is an open-source headless commerce platform. Prior to 3.7.0, ExternalAuthenticationService.createCustomerAndUser in packages/core/src/service/helpers/external-authentication/external-authentication.service.ts selects an existing customer user by emailAddress and attaches a newly presented ExternalAuthenticationMethod without requiring verified to be true. In deployments with a custom external AuthenticationStrategy that forwards an email whose ownership the provider has not verified, an attacker can authenticate with a victim's email and bind the attacker's external identity to the victim's existing account. This can expose orders, addresses, and personal information and permit account changes or orders as the victim. Native-only email and password deployments and external strategies that always require provider-verified email ownership are unaffected, and new-account creation for an unused email remains permitted. This issue is fixed in version 3.7.0.

Record
CVE-2026-63472
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-287
Updated
2026-11-02
OSVGHSA-6j36-r6pr-59x4 9.1

Vendure affected by external-authentication account takeover: external login linked to a pre-existing account by email without verification

External-authentication account takeover: external login linked to a pre-existing account by email without requiring verification

Package: @vendure/core (vendure-ecommerce/vendure, latest master) ·

[!IMPORTANT] This vulnerability only affects deployments that use external / social authentication (an AuthenticationStrategy other than the built-in native email/password strategy) where that strategy can return an email address the external provider has not verified the user owns.

You are affected if all of these are true:

  • Your store configures one or more external AuthenticationStrategy implementations (custom OAuth / social login / SSO), and
  • At least one forwards an emailAddress to ExternalAuthenticationService without guaranteeing the provider verified ownership of it (e.g. it doesn't check the provider's email_verified claim, or leaves verified unset/false), and
  • Customer accounts exist that share an email address with those external identities.

You are NOT affected if:

  • You use only the built-in native (email/password) authentication with no external strategies, or
  • Every external strategy you use only ever returns provider-verified emails (and sets verified: true).

Remediation: Upgrade to 3.7.0. After upgrading, an external login is only linked to a pre-existing account when the email is verified; a custom AuthenticationStrategy must set verified: true only for emails the provider has actually verified.

Summary

ExternalAuthenticationService.createCustomerAndUser() links a newly-presented external (OAuth/social) authentication method to a pre-existing User account selected purely by email-address match, and it does so without requiring config.verified === true. If any configured AuthenticationStrategy forwards an email that was not proven to belong to the external identity (the classic email_verified omission — common with custom OAuth providers, or providers/strategies that don't validate email ownership), an attacker can register at that provider using a victim's email address, authenticate, and have their external identity bound to the victim's existing Vendure account — resulting in account takeover.

Vulnerable code

packages/core/src/service/helpers/external-authentication/external-authentication.service.ts — createCustomerAndUser:

const existingUser = await this.findExistingCustomerUserByEmailAddress(ctx, config.emailAddress);
if (existingUser) {
    user = existingUser;                 // <-- links to the EXISTING account, by email alone
} else {
    user = new User({ identifier: config.emailAddress, verified: config.verified || false, ... });
}
const authMethod = await this.connection.getRepository(ctx, ExternalAuthenticationMethod).save(
    new ExternalAuthenticationMethod({ externalIdentifier: config.externalIdentifier, strategy: config.strategy }),
);
user.authenticationMethods = [...(user.authenticationMethods || []), authMethod];   // <-- external login attached
await this.connection.getRepository(ctx, User).save(user);

config.verified is used only to set User.verified and to write a CUSTOMER_VERIFIED history entry (later in the method) — it is never used to gate whether the external method may be attached to an existing account. So an unverified external email links to the victim's account just the same.

Impact

Account takeover of any customer whose email address an attacker can present (unverified) via an external auth provider — read/modify the victim's orders, addresses, and PII, and place orders as them. The blast radius depends on the deployed AuthenticationStrategy(ies): strategies that don't strictly require a provider-verified email (or providers that don't guarantee email ownership) are directly exploitable.

Reproduction (conceptual)

  1. Victim has a native Vendure customer account [email protected].
  2. Attacker authenticates through an external…
Record
GHSA-6j36-r6pr-59x4
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-287
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
@vendure/core
npm
before 3.7.0
3.7.0

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-63472 is a critical vulnerability (CVSS 9.1) in Vendurehq Vendure, published September 17, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.59%, the 48th percentile. Fixed in @vendure/core 3.7.0.

References

This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open