GitHub Advisoryadvisory · npm

GHSA-6f65-4fv2-wwch Vendure vulnerable to timing attack that enables user enumeration in NativeAuthenticationStrategy

LOW Published 2026-01-30 Modified 2026-01-30 Official page ↗
Aliases
CVE-2026-25050
Ecosystem
npm
Packages
@vendure/core
Severity
Low
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:U
Weaknesses
CWE-202
Reviewed
2026-01-30

Affected packages

• npm @vendure/core: < 3.5.3 → fixed in 3.5.3

Description

Summary The `NativeAuthenticationStrategy.authenticate()` method is vulnerable to a timing attack that allows attackers to enumerate valid usernames (email addresses). Details In `packages/core/src/config/auth/native-authentication-strategy.ts`, the authenticate method returns immediately if a user is not found: ```typescript const user = await this.userService.getUserByEmailAddress(ctx, data.username); if (!user) { return false; // Instant return (~1-5ms) } const passwordMatch = await this.verifyUserPassword(ctx, user.id, data.password); // Password check takes ~200-400ms with bcrypt (12 rounds) ``` The significant timing difference (~200-400ms for bcrypt vs ~1-5ms for DB miss) allows attackers to reliably distinguish between existing and non-existing accounts. Impact • Attackers can enumerate valid user accounts • Enables targeted brute-force or phishing attacks • Information disclosure (account existence) Recommended Fix Perform a dummy bcrypt check when user is not found to ensure consistent response times.

Related

Alias · CVE (1)

  • CVE-2026-25050 Vendure is an open-source headless commerce platform. vulnerability

Weakness · CWE (1)

  • CWE-202 Exposure of Sensitive Information Through Data Queries weakness

References