Skip to main content

OpenDeepWiki EUVDEUVD-2026-113934

| CVE-2026-119597 CRITICAL
Use of Hard-coded Cryptographic Key (CWE-321)
2026-10-30 VulnCheck GHSA-fc52-73gp-r537
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify OpenDeepWiki ≤2.0.6 instance
  2. Delivery
    Read public default Jwt:SecretKey from source
  3. Exploit
    Forge HS256 token with Admin claim
  4. Execution
    Send bearer token to /api/admin
  5. Impact
    Take over users, settings, and API keys

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Key management, no hard-coded keys
Exploitation Conditions

Exploitation requires the instance to run with the shipped hard-coded JWT signing key - the publicly known value "OpenDeepWiki-Default-Secret-Key-Please-Change-In-Production-Environment-2024" present in src/OpenDeepWiki/appsettings.json and used as the default in compose.yaml/compose.pgsql.yaml. Because that default was shipped, default/out-of-the-box deployments are exploitable by remote unauthenticated attackers with no user interaction. The limiting factor is operator configuration: deployments that overrode JWT_SECRET_KEY with a strong random value before this fix are not exploitable, since the attacker can only forge tokens when the signing key is the known default.

Impact

This is a genuine high-priority issue, not a high-CVSS-but-low-real-risk case. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity, unauthenticated exploitation, and that is consistent with the mechanism: the JWT signing secret is hard-coded and publicly known (CWE-321), so an attacker can forge HS256 admin tokens without any credentials. The vuln.today decision label is act_now and the finding was reported by VulnCheck, which reinforces priority. The impact metrics (VC:H/VI:H/VA:H) are well supported because forged Admin tokens grant control over users, roles, repositories, settings, and API keys. Countervailing signals: no EPSS score and no KEV listing were provided, and there is no confirmed active-exploitation signal, so this is not confirmed exploited in the wild - the urgency rests on the act_now decision label, the trivial exploitability, and a public technical write-up rather than observed attacks. One real limiter exists that the raw score does not capture: exploitation requires the deployment to still be using the shipped default/hard-coded secret (default Docker Compose and appsettings.json did ship it), so hardened deployments that set a strong JWT_SECRET_KEY are not affected.

Exploit ScenarioDerived

An attacker who knows the published default secret from appsettings.json locally mints an HS256 JWT containing an Admin role claim, then presents it as a bearer token to the application's /api/admin endpoints over the network with no login required. With admin access they take over users and roles, manipulate repositories and settings, and read or rotate API keys. A public technical write-up (hackmd) documents the forgery technique, though it is not verified as working exploit code.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

OpenDeepWiki through 2.0.6 signs HS256 JWT bearer tokens with a hard-coded signing key that is published in src/OpenDeepWiki/appsettings.json and shipped as the default JWT_SECRET_KEY in the project's compose.yaml, compose.pgsql.yaml, Sealos template and publish.bat, so anyone who knows that public string can mint an Administrator token and drive the /api/admin API - creating or modifying users, roles, repositories, global settings and API keys. Exploitation is remote and unauthenticated (CVSS:4.0 9.3, vector PR:N/UI:N) and requires no action from a victim; the sole precondition is that the instance was left running with the shipped default key, meaning out-of-the-box and default Docker Compose deployments are fully compromised while installations that supplied their own strong JWT_SECRET_KEY are not. The issue is rated act_now and fixed upstream in commit 1bf0f4b5ef8d972ca640e5df145b5813a9492544; no CISA KEV entry exists and no verified working exploit code is known, although a public technical writeup demonstrating the administrator-token forgery technique is referenced.

RemediationAI

Apply the upstream fix in commit 1bf0f4b5ef8d972ca640e5df145b5813a9492544 (https://github.com/AIDotNet/OpenDeepWiki/commit/1bf0f4b5ef8d972ca640e5df145b5813a9492544, tracked in https://github.com/AIDotNet/OpenDeepWiki/issues/403) or upgrade to any build that includes it; no tagged fixed release version is confirmed in the available data, so verify the commit is present before trusting a version number. Independently of the patch, set JWT_SECRET_KEY to a random value of at least 32 characters - for example the output of openssl rand -base64 48 - since the fixed code refuses to start outside Development when the key is missing, too short, or one of the known published defaults, which means unconfigured deployments will fail fast until the variable is provided. Expect that rotating the key immediately invalidates every existing session and forces all users to log in again. Because a default-key instance allowed undetected administrator-level access, after rotating treat the installation as previously compromised: audit and remove unexpected admin accounts and roles, revoke and reissue stored API keys and repository credentials, review settings changes, and check logs for requests to /api/admin endpoints from unfamiliar sources. Note that in Development the fixed code falls back to a per-process random key, so tokens are invalidated on each restart; do not rely on that behaviour in production.

Affected VersionsENISA

OpenDeepWiki 0 ≤2.0.6

Affected Packages

euvd opendeepwiki no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OpenDeepWiki is an ASP.NET Core application that authenticates API callers with JWT bearer tokens. The JwtOptions.SecretKey value is loaded from appsettings.json and passed to the JWT bearer handler, and before the fix Program.cs fell back to the literal string "OpenDeepWiki-Default-Secret-Key-Please-Change-In-Production-Environment-2024" whenever neither the configuration value nor the JWT_SECRET_KEY environment variable was set. That is a textbook CWE-321 (Use of Hard-coded Cryptographic Key): with a symmetric HS256 algorithm the signing key is the entire trust anchor, so knowledge of the key is equivalent to the ability to issue tokens for any subject and any claim. Because the application authorizes /api/admin routes on the role claim inside the token, an attacker can craft a token carrying the Admin role and have it accepted as a legitimate administrator session - no credentials, no password reset, no interaction. The same default was propagated beyond appsettings.json into compose.yaml (${JWT_SECRET_KEY:-<default>}), compose.pgsql.yaml, docs/content/docs/deployment/docker-compose.mdx, scripts/sealos/sealos-template.yaml, publish.bat and the .env.example/README samples, which is what makes default deployments broadly affected. The upstream fix removes the fallback, rejects empty, shorter-than-32-character and known-published default values, throws at startup outside the Development environment, and generates a process-local random key only in Development (tokens then die on restart).

Know when Opendeepwiki gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 9.8 CRITICAL

Publicly known hard-coded secret lets any remote attacker forge admin tokens with no auth (PR:N, AC:L, AV:N); full admin control over data and settings gives C/I/A High.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

OpenDeepWiki through 2.0.6 contains a hard-coded JWT signing key vulnerability that allows unauthenticated attackers to forge administrator tokens using the publicly known Jwt:SecretKey in appsettings.json. Attackers can mint HS256 bearer tokens with an Admin role claim to access /api/admin endpoints and control users, roles, repositories, settings, and API keys.

Executive ViewAI

Why It Matters

CVE-2026-119597 is a critical authentication bypass in OpenDeepWiki (versions through 2.0.6) that allows unauthenticated attackers to mint administrator tokens using a hard-coded JWT signing key, potentially granting full control over user accounts, repositories, and global settings for any default deployment. Organizations using out-of-the-box Docker Compose or default configurations are immediately exposed, and successful exploitation could lead to data breaches, service disruption, and reputational damage. Leadership must prioritize immediate patching or mitigation to prevent unauthorized access.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Low
niche open-source .NET AI wiki tool, limited enterprise footprint
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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