Skip to main content

nebula-mesh CVE-2026-53603

| EUVDEUVD-2026-71716 HIGH
Cleartext Storage of Sensitive Information (CWE-312)
2026-07-14 https://github.com/forgekeep/nebula-mesh GHSA-q4vm-pq3q-8wgq
7.1
CVSS 4.0 · Vendor: https://github.com/forgekeep/nebula-mesh
Share

Severity by source

Vendor (https://github.com/forgekeep/nebula-mesh) PRIMARY
7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
5.3 MEDIUM

AC:H because database read access is a genuine secondary prerequisite; C:H for full session token exposure; I:N and A:N as no integrity or availability impact applies.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/forgekeep/nebula-mesh).

CVSS VectorVendor: https://github.com/forgekeep/nebula-mesh

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

6
Analysis Updated
Sep 04, 2026 - 20:31 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Sep 04, 2026 - 20:22 vuln.today
cvss_changed
CVSS changed
Sep 04, 2026 - 20:22 NVD
7.1 (HIGH)
Source Code Evidence Fetched
Jul 14, 2026 - 21:07 vuln.today
Analysis Generated
Jul 14, 2026 - 21:07 vuln.today
CVE Published
Jul 14, 2026 - 20:17 cve.org
HIGH

DescriptionCVE.org

Impact

Operator session tokens are stored in plaintext in the operator_sessions table (the token column is the PRIMARY KEY). The session token is a 32-byte random hex value sent directly in a cookie and valid for 24 hours.

  • internal/models/operator.go:61 - OperatorSession.Token holds the plaintext token.
  • internal/store/sqlite_operators.go:590 - CreateOperatorSession inserts sess.Token verbatim.
  • internal/store/sqlite_operators.go:603,642,681,698 - lookups/updates/deletes use WHERE token = ? against the plaintext value.

Anyone who can read the database (backup, snapshot, file copy, or SQL-level disclosure) obtains every active session token and can hijack operator sessions directly, with no further authentication.

This is functionally identical to the plaintext enrollment-token issue fixed in GHSA-ghmh-jhmj-wcmf. API keys (OperatorAPIKey.KeyHash) and enrollment tokens (EnrollmentToken.TokenHash) already store only a SHA256 hash; session tokens were missed.

Patches

Store only a SHA256 hash of the session token, mirroring API keys and enrollment tokens:

  1. Add a HashSessionToken helper (alongside the existing token-hash helpers).
  2. Migration to add a token_hash column.
  3. Update CreateOperatorSession, PromoteOperatorSession, and GetOperatorBySession to write/look up by hash.
  4. Drop the plaintext token column in a follow-up migration.

Sessions are ephemeral (24h TTL), so all active sessions can be invalidated on deployment - no backward compatibility needed.

Workarounds

Restrict and encrypt database backups; rotate the operator database. These mitigate exposure but do not fix the underlying storage of plaintext tokens.

Resources

  • internal/models/operator.go:58-66
  • internal/store/sqlite_operators.go:577-698
  • Migration 005_operators.up.sql:27
  • Prior related advisory: GHSA-ghmh-jhmj-wcmf

AnalysisAI

Plaintext session token storage in nebula-mesh's SQLite operator_sessions table exposes every active operator session to anyone who can read the database. All versions through 0.3.7 of the Go-based mesh network management tool (pkg:go/github.com/forgekeep/nebula-mesh) insert 32-byte hex session tokens verbatim as the primary key in operator_sessions, meaning a database backup, snapshot, file copy, or a future SQL-injection disclosure path yields all tokens needed for immediate session hijack. The fix, shipped in v0.3.8 (commit 7cb01bab), mirrors the SHA-256 hashing already applied to API keys and enrollment tokens; no public exploit or active exploitation has been identified at time of analysis.

Technical ContextAI

nebula-mesh is a Go application (pkg:go/github.com/forgekeep/nebula-mesh) that uses SQLite for persistence via an internal store layer. Operator sessions are managed in the operator_sessions table defined in migration 005_operators.up.sql. The session token is a 32-byte cryptographically random hex string generated at login and sent in an HTTP cookie; it is valid for 24 hours. CWE-312 (Cleartext Storage of Sensitive Information) applies because internal/store/sqlite_operators.go:590 calls CreateOperatorSession inserting sess.Token verbatim, and lookups at lines 603, 642, 681, and 698 compare raw token values with WHERE token = ?. A related class of token storage - API keys (OperatorAPIKey.KeyHash) and enrollment tokens (EnrollmentToken.TokenHash) - was already hashed with SHA-256, as was the enrollment-token bug fixed in GHSA-ghmh-jhmj-wcmf. Session tokens were the only remaining credential class stored in cleartext, now corrected by migration 019_session_token_hash which renames the column to token_hash and updates the application layer to write and compare SHA-256 digests.

RemediationAI

Upgrade to nebula-mesh v0.3.8, which applies SHA-256 hashing to session tokens at rest via migration 019_session_token_hash and updates CreateOperatorSession, PromoteOperatorSession, and GetOperatorBySession accordingly (patch commit 7cb01bab281ded557f8b6c81dab5f48d4c10182e). Because existing operator_sessions rows contain raw tokens that will never match a hash-based lookup after migration, all active sessions are automatically invalidated on upgrade - operators must re-authenticate, which the advisory notes is acceptable given the 24-hour TTL. If immediate upgrade is not possible, restrict filesystem permissions on the SQLite database file to the service account only, encrypt all database backups at rest, and audit snapshot or cloud-storage configurations for unintended database exposure. These workarounds reduce the probability of token extraction but do not eliminate the plaintext storage flaw. Advisory: https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-q4vm-pq3q-8wgq.

Vendor StatusVendor

SUSE

Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected

Share

CVE-2026-53603 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy