---
id: "CVE-2026-119597"
kind: "vulnerability"
aliases: ["CVE-2026-119597"]
title: "OpenDeepWiki: hard-coded JWT key lets anyone forge admin tokens"
severity: "critical"
cvss: 9.8
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: [{"name": "OpenDeepWiki", "fixed": [], "affected": "<= 2.0.6", "ecosystem": "github"}]
ecosystems: []
tags: ["ai-tooling", "dotnet", "jwt", "opendeepwiki", "self-hosted"]
not_affected_if: ["admin-api-not-exposed", "custom-jwt-secret"]
published_at: "2026-10-30T14:16:47+00:00"
first_seen_at: "2026-10-30T14:30:54+00:00"
updated_at: "2026-10-30T14:34:13+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-119597", "first_seen_at": "2026-10-30T14:30:54+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-30T14:34:13+00:00"}]
---

# OpenDeepWiki: hard-coded JWT key lets anyone forge admin tokens

OpenDeepWiki ships a publicly known JWT signing key in appsettings.json, so anyone can sign their own HS256 token with an Admin role. That token opens the /api/admin endpoints to change users, roles, repositories, settings and API keys.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- github:OpenDeepWiki affected <= 2.0.6 fixed ?

## How to check

- Check the deployed version: 2.0.6 or earlier is in scope per NVD.
- Check whether Jwt:SecretKey in appsettings.json, or the JWT_SECRET_KEY environment variable, is empty, the shipped default, or a private random value. A private value of your own means forged tokens will not validate.
- Check whether /api/admin is reachable from untrusted networks.

## Timeline

- 2026-10-30T14:30:54+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-119597
- 2026-10-30T14:34:13+00:00 analyst — NVD page unreadable via tools; no vendor advisory or fixed release found. Latest release is v2.0.6 (8 Sep), the same version the CVE lists as affected, so no release is known fixed. Current main appsettings.json has Jwt:SecretKey empty (the 'built-in dev key' the docs mention is not visible in that file), so the default key may live in code or an older file. Not verified. Settle it by finding the maintainer's issue or commit, or a release after 2.0.6. Workaround from the docs: set a strong JWT_SECRET_KEY in production, which the docs say must be changed.

## Documents

- [mentions] OpenDeepWiki releases (latest v2.0.6, 8 Sep) https://github.com/AIDotNet/OpenDeepWiki/releases
- [mentions] OpenDeepWiki main appsettings.json (Jwt:SecretKey empty) https://raw.githubusercontent.com/AIDotNet/OpenDeepWiki/main/src/OpenDeepWiki/appsettings.json

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
