/

CVE-2026-63149

Severity:

HIGH RISK

(7.4)

Predictable Passwords (CWE-330) in Agora Project Accounts

CVE-2026-63149

Deferred

Vulnerability type

Category:

Insufficiently Random Values

CWE:

CWE-330

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

Omnispace Agora generates temporary or default account passwords with PHP's time-based uniqid() function, making those passwords potentially predictable.

An attacker who can observe or approximate when an account was created may calculate the generated password and access the account before its legitimate user signs in.

Omnispace Agora generates temporary or default account passwords with PHP's time-based uniqid() function, making those passwords potentially predictable.

An attacker who can observe or approximate when an account was created may calculate the generated password and access the account before its legitimate user signs in.

Affected context

The vulnerability affects Agora deployments that generate temporary or default account passwords through Txt::defaultPassword() and rely on PHP's uniqid() output. Risk is higher when an attacker can learn or closely estimate account creation times and the generated password remains usable before the account owner replaces it.

The vulnerability affects Agora deployments that generate temporary or default account passwords through Txt::defaultPassword() and rely on PHP's uniqid() output. Risk is higher when an attacker can learn or closely estimate account creation times and the generated password remains usable before the account owner replaces it.

Exploit preconditions

  • Attack surface: Account creation or initialization workflows that generate default passwords
  • Required access: Ability to observe, infer, or approximate an account's creation time, plus a route to authenticate to the target account
  • Trigger point: Generation and subsequent use of a temporary or default password
  • Why exploitation is possible: uniqid() is derived from server timing information rather than a cryptographically secure random source, allowing outputs to be predicted within a sufficiently narrow time window
  • Attack surface: Account creation or initialization workflows that generate default passwords
  • Required access: Ability to observe, infer, or approximate an account's creation time, plus a route to authenticate to the target account
  • Trigger point: Generation and subsequent use of a temporary or default password
  • Why exploitation is possible: uniqid() is derived from server timing information rather than a cryptographically secure random source, allowing outputs to be predicted within a sufficiently narrow time window

Why this happens

The underlying issue is the use of a time-based identifier generator for security-sensitive password creation. PHP's uniqid() is intended for generating unique-looking values, not unpredictable secrets; its output can reflect server time at microsecond resolution. This maps to CWE-330: Use of Insufficiently Random Values, because an attacker may reproduce or narrow the set of possible generated passwords.

The underlying issue is the use of a time-based identifier generator for security-sensitive password creation. PHP's uniqid() is intended for generating unique-looking values, not unpredictable secrets; its output can reflect server time at microsecond resolution. This maps to CWE-330: Use of Insufficiently Random Values, because an attacker may reproduce or narrow the set of possible generated passwords.

Potential impact

  • An attacker could access an account before the legitimate user logs in
  • Temporary credentials may be guessed or reproduced
  • User data and account-controlled settings could be exposed or modified
  • Compromised accounts could be used for further attacks or privilege abuse
  • An attacker could access an account before the legitimate user logs in
  • Temporary credentials may be guessed or reproduced
  • User data and account-controlled settings could be exposed or modified
  • Compromised accounts could be used for further attacks or privilege abuse

General mitigation guidance

Mitigation generally centers on replacing predictable value generation with cryptographically secure secret generation.

Common defensive patterns include:

  • Generate passwords and reset tokens with a cryptographically secure random source
  • Avoid using timestamps, counters, or uniqueness-oriented identifiers as authentication secrets
  • Make temporary credentials short-lived and require replacement on first use
  • Store passwords using strong, salted password-hashing schemes rather than reversible forms
  • Apply least privilege to newly created accounts and limit default account capabilities
  • Reduce trust in observable account metadata, including creation timestamps

Mitigation generally centers on replacing predictable value generation with cryptographically secure secret generation.

Common defensive patterns include:

  • Generate passwords and reset tokens with a cryptographically secure random source
  • Avoid using timestamps, counters, or uniqueness-oriented identifiers as authentication secrets
  • Make temporary credentials short-lived and require replacement on first use
  • Store passwords using strong, salted password-hashing schemes rather than reversible forms
  • Apply least privilege to newly created accounts and limit default account capabilities
  • Reduce trust in observable account metadata, including creation timestamps

How teams detect issues like this

Organizations can identify similar weaknesses through:

  • Static analysis rules that flag uniqid(), timestamps, counters, or other predictable values in password and token-generation paths
  • Code review checks for security-sensitive values produced by non-cryptographic APIs
  • Tests that assess whether generated credentials remain predictable when creation times are known
  • Policy enforcement requiring approved cryptographic random-number generators for authentication secrets
  • Monitoring for repeated authentication attempts against newly created accounts

Organizations can identify similar weaknesses through:

  • Static analysis rules that flag uniqid(), timestamps, counters, or other predictable values in password and token-generation paths
  • Code review checks for security-sensitive values produced by non-cryptographic APIs
  • Tests that assess whether generated credentials remain predictable when creation times are known
  • Policy enforcement requiring approved cryptographic random-number generators for authentication secrets
  • Monitoring for repeated authentication attempts against newly created accounts

Sources

SourceLink
github.comgithub.com/xech/agora-project/releases/tag/26.10
agora-project.netagora-project.net/
vulncheck.comvulncheck.com/advisories/omnispace-agora-project-predictable-default-password-via-uniqid

Frequently asked

questions

It can be, if an attacker can reach the affected authentication flow and obtain or approximate the target account's creation time. Exploitability also depends on whether the generated password remains valid.

Not necessarily. The attacker generally needs a usable login path and enough timing information to predict the generated credential, but does not need to know the legitimate user's password.

Replace time-based password generation with a cryptographically secure random generator, then enforce short-lived temporary credentials and mandatory replacement.

Treat every password, reset token, and session secret as security-sensitive; prohibit predictable generators in those paths and verify randomness requirements through code review, automated analysis, and testing.

It can be, if an attacker can reach the affected authentication flow and obtain or approximate the target account's creation time. Exploitability also depends on whether the generated password remains valid.

Not necessarily. The attacker generally needs a usable login path and enough timing information to predict the generated credential, but does not need to know the legitimate user's password.

Replace time-based password generation with a cryptographically secure random generator, then enforce short-lived temporary credentials and mandatory replacement.

Treat every password, reset token, and session secret as security-sensitive; prohibit predictable generators in those paths and verify randomness requirements through code review, automated analysis, and testing.

Find out what's already
exploitable in your codebase.