| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| vendure | < 3.5.3 | 3.5.3 |
| @vendure/core | < 3.5.3 | 3.5.3 |
The NativeAuthenticationStrategy.authenticate() method is vulnerable to a timing attack that allows attackers to enumerate valid usernames (email addresses).
In packages/core/src/config/auth/native-authentication-strategy.ts, the authenticate method returns immediately if a user is not found:
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.
Perform a dummy bcrypt check when user is not found to ensure consistent response times.
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phí