/

CVE-2026-109394

Severity:

HIGH RISK

(7.4)

Authentication Bypass (CWE-639) in Thirty bees Passwords

CVE-2026-109394

Deferred

Vulnerability type

Category:

Authentication Bypass

CWE:

CWE-639

Impact:

Account Takeover

Severity:

HIGH RISK

(7.4)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Thirty bees contains an authentication bypass in PasswordController::resolveCustomer() that can allow an unauthenticated attacker to reset a registered customer's password. The issue becomes exploitable when guest checkout is enabled and an attacker can obtain a guest account token associated with the victim's email address.

Thirty bees contains an authentication bypass in PasswordController::resolveCustomer() that can allow an unauthenticated attacker to reset a registered customer's password. The issue becomes exploitable when guest checkout is enabled and an attacker can obtain a guest account token associated with the victim's email address.

Affected context

The vulnerability affects Thirty bees installations through version 1.7.0 when guest checkout is enabled and password-reset handling accepts guest account tokens without adequately confirming ownership of the registered customer account. The vulnerable behavior is associated with the customer resolution and password-reset flow.

The vulnerability affects Thirty bees installations through version 1.7.0 when guest checkout is enabled and password-reset handling accepts guest account tokens without adequately confirming ownership of the registered customer account. The vulnerable behavior is associated with the customer resolution and password-reset flow.

Exploit preconditions

  • Attack surface: Customer password-reset functionality - Required access: No authenticated account is required; the attacker must

be able to create or use a guest order associated with the target email

address

  • Trigger point: PasswordController::resolveCustomer() while processing a

guest secure key

  • Why exploitation is possible: Guest-order credentials can be accepted as

sufficient authority to identify and reset a registered customer's

password

  • Attack surface: Customer password-reset functionality - Required access: No authenticated account is required; the attacker must

be able to create or use a guest order associated with the target email

address

  • Trigger point: PasswordController::resolveCustomer() while processing a

guest secure key

  • Why exploitation is possible: Guest-order credentials can be accepted as

sufficient authority to identify and reset a registered customer's

password

Why this happens

The underlying flaw is an authorization failure caused by treating a guest account token as equivalent to proof of control over a registered customer account. This behavior maps to CWE-639, Authorization Bypass Through User- Controlled Key, because a user-controlled identifier or token can select a protected account without an adequate ownership check. The insecure pattern is the failure to enforce distinct authorization boundaries between guest orders and registered customer password changes.

The underlying flaw is an authorization failure caused by treating a guest account token as equivalent to proof of control over a registered customer account. This behavior maps to CWE-639, Authorization Bypass Through User- Controlled Key, because a user-controlled identifier or token can select a protected account without an adequate ownership check. The insecure pattern is the failure to enforce distinct authorization boundaries between guest orders and registered customer password changes.

Potential impact

  • An attacker may reset a victim's account password.
  • The attacker could take over the affected customer account.
  • Stored personal, order, or address information may be exposed.
  • An attacker may misuse account privileges or saved account functionality.
  • An attacker may reset a victim's account password.
  • The attacker could take over the affected customer account.
  • Stored personal, order, or address information may be exposed.
  • An attacker may misuse account privileges or saved account functionality.

General mitigation guidance

Mitigation generally focuses on separating guest-order authorization from registered-account recovery. Password-reset workflows should require independent proof of account ownership, use narrowly scoped and single-purpose recovery tokens, and avoid deriving authorization solely from user-controlled email addresses or guest identifiers. Guest checkout and account-recovery policies can be configured to minimize trust overlap, while session invalidation, rate limiting, notification, and least-privilege controls can reduce abuse impact. Security-sensitive actions should be validated server-side before changing account credentials.

Mitigation generally focuses on separating guest-order authorization from registered-account recovery. Password-reset workflows should require independent proof of account ownership, use narrowly scoped and single-purpose recovery tokens, and avoid deriving authorization solely from user-controlled email addresses or guest identifiers. Guest checkout and account-recovery policies can be configured to minimize trust overlap, while session invalidation, rate limiting, notification, and least-privilege controls can reduce abuse impact. Security-sensitive actions should be validated server-side before changing account credentials.

How teams detect issues like this

Detection can include static analysis and code review for password-reset paths that resolve accounts from guest keys, order identifiers, or user-controlled email addresses without an independent authorization check. Runtime monitoring can look for unusual guest-order creation followed by password-reset requests, repeated recovery attempts, and credential changes affecting existing accounts. Policy enforcement may require security review for customer-identity resolution and recovery logic, and automated review tools can help identify authorization checks that are missing or applied after account selection.

Detection can include static analysis and code review for password-reset paths that resolve accounts from guest keys, order identifiers, or user-controlled email addresses without an independent authorization check. Runtime monitoring can look for unusual guest-order creation followed by password-reset requests, repeated recovery attempts, and credential changes affecting existing accounts. Policy enforcement may require security review for customer-identity resolution and recovery logic, and automated review tools can help identify authorization checks that are missing or applied after account selection.

Sources

SourceLink
github.comgithub.com/thirtybees/thirtybees
github.comgithub.com/thirtybees/thirtybees/blob/1.7.0/controllers/front/PasswordController.php#L182-L200
github.comgithub.com/thirtybees/thirtybees/commit/66410fd2a7ca9d1121a4b9551f59637ae6e4bcf1
hackmd.iohackmd.io/@leediay/SJc93G5ofl
vulncheck.comvulncheck.com/advisories/thirty-bees-through-1.7.0-account-takeover-via-passwordcontroller-guest-checkout

Frequently asked

questions

Yes. The described attack does not require a pre-existing authenticated

customer session, but it depends on guest checkout being enabled and on the

attacker obtaining a usable guest token associated with the target email.

The attacker needs access to the public guest-order and password-recovery

workflows. They do not necessarily need access to the victim's existing

account.

Require independent proof of ownership before changing a registered

customer's password, and ensure guest tokens cannot authorize actions on

registered accounts.

Model guest and registered identities as separate authorization domains,

review account-recovery flows for user-controlled account selectors, and

test credential-change operations against both authenticated and

unauthenticated attack scenarios.

Yes. The described attack does not require a pre-existing authenticated

customer session, but it depends on guest checkout being enabled and on the

attacker obtaining a usable guest token associated with the target email.

The attacker needs access to the public guest-order and password-recovery

workflows. They do not necessarily need access to the victim's existing

account.

Require independent proof of ownership before changing a registered

customer's password, and ensure guest tokens cannot authorize actions on

registered accounts.

Model guest and registered identities as separate authorization domains,

review account-recovery flows for user-controlled account selectors, and

test credential-change operations against both authenticated and

unauthenticated attack scenarios.

Find out what's already
exploitable in your codebase.