Authentication Bypass via Default JWT Secret in NocoBase docker-compose Deployments

Description

Impact

CVE-2025-13877 is an authentication bypass vulnerability caused by insecure default JWT key usage in NocoBase Docker deployments.

Because the official one-click Docker deployment configuration historically provided a public default JWT key, attackers can forge valid JWT tokens without possessing any legitimate credentials. By constructing a token with a known userId (commonly the administrator account), an attacker can directly bypass authentication and authorization checks.

Successful exploitation allows an attacker to:

  • Bypass authentication entirely
  • Impersonate arbitrary users
  • Gain full administrator privileges
  • Access sensitive business data
  • Create, modify, or delete users
  • Access cloud storage credentials and other protected secrets

The vulnerability is remotely exploitable, requires no authentication, and public proof-of-concept exploits are available.
This issue is functionally equivalent in impact to other JWT secret exposure vulnerabilities such as CVE-2024-43441 and CVE-2025-30206.

Deployments that used the default Docker configuration without explicitly overriding the JWT secret are affected.


Patches

✅ The vulnerability has been fully patched through a secure JWT key management redesign.

The remediation enforces the following security guarantees:

  • JWT secrets are no longer allowed to fall back to public default values.
  • Secrets must either:
  • Be explicitly provided by the user, or
  • Be securely generated using cryptographically strong randomness at first startup.
  • Generated secrets are persisted securely with restricted filesystem permissions.
  • Invalid or weak secret values immediately trigger a startup failure.

✅ Fixed Versions:
- NocoBase ≥ 1.9.23
- NocoBase ≥ 1.9.0-beta.18
- NocoBase ≥ 2.0.0-alpha.52


Workarounds

If upgrading is not immediately possible, the following temporary mitigations must be performed to reduce risk:

  1. Explicitly set a strong, randomly generated JWT secret via environment variables APP_KEY.
  2. Restart all running NocoBase instances so the new secret takes effect.
  3. Invalidate all existing JWT sessions, forcing complete user re-authentication.
  4. Verify that no default secret values are present in:
    - docker-compose.yml
    - .env files
    - Kubernetes Secrets

References

  • CVE Record: CVE-2025-13877
  • VulDB Entry: https://vuldb.com/?id.334033
  • Public Exploit Proof:
    https://gist.github.com/H2u8s/f3ede60d7ecfe598ae452aa5a8fbb90d

  • Affected Default Docker Configurations:

  • https://github.com/nocobase/nocobase/blob/main/docker/app-mysql/docker-compose.yml#L13
  • https://github.com/nocobase/nocobase/blob/main/docker/app-mariadb/docker-compose.yml#L13
  • https://github.com/nocobase/nocobase/blob/main/docker/app-postgres/docker-compose.yml#L11
  • https://github.com/nocobase/nocobase/blob/main/docker/app-sqlite/docker-compose.yml#L11

  • Official Deployment Documentation:

  • https://docs.nocobase.com/welcome/getting-started/installation/docker-compose
  • https://v2.docs.nocobase.com/get-started/installation/docker

Basic information

Type
reviewed
Severity
medium
Advisory on GitHub
Open advisory ↗
Repository advisory
Open repository advisory ↗
Source code
Browse source ↗
Published (advisory)
2025-12-09 17:42:53 UTC
Updated
2025-12-09 17:42:54 UTC
GitHub reviewed
2025-12-09 17:42:53 UTC

EPSS Score

Score Percentile
0.07% 22.35%

CVSS Scores

Base score Version Severity Vector
6.3 4.0
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network.
Attack complexity (AC:H)
Exploitation depends on constrained or hard-to-reproduce conditions.
Attack requirements (AT:N)
No additional preconditions are required beyond normal reachability.
Privileges required (PR:N)
No privileges are required.
User interaction (UI:N)
No user interaction is required.
Vulnerable system confidentiality impact (VC:L)
Limited confidentiality impact on the vulnerable system.
Vulnerable system integrity impact (VI:L)
Limited integrity impact on the vulnerable system.
Vulnerable system availability impact (VA:L)
Limited availability impact on the vulnerable system.
Subsequent system confidentiality impact (SC:N)
No confidentiality impact on subsequent systems.
Subsequent system integrity impact (SI:N)
No integrity impact on subsequent systems.
Subsequent system availability impact (SA:N)
No availability impact on subsequent systems.

Identifiers

CWEs

CWE id Name
CWE-321 Use of Hard-coded Cryptographic Key
CWE-1320 Improper Protection for Outbound Error Messages and Alert Signals

Credits

  • H2u8s (reporter)

Affected packages (3)

Vulnerable version ranges and first patched releases as published by GitHub.

Ecosystem Package Vulnerable range First patched Vulnerable functions
npm @nocobase/auth >= 1.9.0, <= 1.9.21 1.9.23
npm @nocobase/auth <= 1.9.0-beta.17 1.9.0-beta.18
npm @nocobase/auth >= 2.0.0-alpha.1, <= 2.0.0-alpha.51 2.0.0-alpha.52

References

cvelogic Threat Intelligence