Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain shipped JWT_SECRET_KEY from public config
-
DeliveryForge HS256 token with admin email subject
-
ExploitSubmit token to gateway API
-
Executionverify_jwt_token accepts, get_current_user grants admin
-
ImpactPerform administrative disclosure, modification, and disruption
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two concrete conditions must both hold: (1) the gateway still uses the known shipped JWT_SECRET_KEY (value 'my-test-key-but-now-longer-than-32-bytes' from pre-1.0.2 config.py/.env.example) rather than a rotated secret, and (2) the platform-admin bootstrap is active, i.e. REQUIRE_USER_IN_DB is false and the attacker sets the token subject to PLATFORM_ADMIN_EMAIL. Tokens must be HS256-signed. LIMITING FACTORS: the commit documents that the production default for REQUIRE_USER_IN_DB is true (which requires a DB-seeded admin and closes the bootstrap path), so strictly default production installs are not exploitable via this path; operators who rotated JWT_SECRET_KEY before 1.0.2 are also protected. Exploitation is remote and needs no user interaction or prior authentication once these conditions are met. |
| Impact | All severity signals align toward high technical impact: the NVD CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, base 9.8) describes remote, unauthenticated, low-complexity forging of platform-administrator JWTs, matching the CWE-287 improper-authentication classification and the full confidentiality/integrity/availability loss the description enumerates (administrative disclosure, modification, and service disruption). However, the real-world urgency is tempered by preconditions the CVSS vector does not capture: exploitation only works 'while the vulnerable signing key remains configured and the platform-admin bootstrap remains enabled,' and the commit diff shows the production default for REQUIRE_USER_IN_DB is true (the bootstrap path requires it to be false, a documented development setting). No EPSS score, no CISA KEV listing, and no POC were provided in the input, so there is no public evidence of active exploitation or weaponization - this is a high-CVSS issue whose real risk is concentrated in default/development deployments that never rotated the shipped JWT_SECRET_KEY. CONFLICT TO NOTE: CVSS implies default-configuration mass exploitability (PR:N/AC:L), while the description's 'while ... remains configured/enabled' wording and the production REQUIRE_USER_IN_DB=true default imply a config-dependent subset of installs - verify your own REQUIRE_USER_IN_DB and JWT_SECRET_KEY values rather than assuming universal exposure. |
| Exploit ScenarioDerived | An attacker who knows the publicly shipped JWT_SECRET_KEY from config.py/.env.example crafts an HS256 JWT whose subject equals PLATFORM_ADMIN_EMAIL and sends it to the gateway, which verify_jwt_token() accepts and get_current_user() promotes to a platform administrator without any database account. No POC was provided in the input, but the hardcoded key and documented bootstrap logic make exploitation straightforward where REQUIRE_USER_IN_DB is false. Because the forgery depends only on the static key, the access persists through password rotation, account deletion, and session revocation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Improper authentication in IBM MCP Context Forge prior to 1.0.2 allows remote, unauthenticated attackers to forge HS256-signed JWTs using a JWT_SECRET_KEY shipped in mcpgateway/config.py and .env.example, gaining full platform-administrator access without a database account. The attack requires two conditions to hold simultaneously: the gateway must still use the known shipped signing key, and the platform-admin bootstrap must be active (REQUIRE_USER_IN_DB=false with the token subject set to PLATFORM_ADMIN_EMAIL); because the documented production default for REQUIRE_USER_IN_DB is true, strictly default production deployments are protected, as are operators who rotated the secret before upgrading. Where both conditions are met, forged administrator tokens survive password rotation, account deletion, and session revocation, enabling administrative disclosure, modification, and service disruption; no public exploit code has been identified at time of analysis and the issue is fixed in 1.0.2.
RemediationAI
Vendor-released patch: upgrade to MCP Context Forge 1.0.2 or later (https://github.com/IBM/mcp-context-forge/releases/tag/v1.0.2, advisory GHSA-m8rv-5m6m-32ff), which replaces the shipped placeholder secrets and documents the safe bootstrap default. Because the vulnerability is a shared-secret issue, upgrading alone is insufficient for any pre-1.0.2 deployment that actually used the default keys: immediately rotate JWT_SECRET_KEY and AUTH_ENCRYPTION_SECRET using python -m mcpgateway.scripts.init_secrets --stdout, understanding that rotation invalidates all previously issued access and refresh tokens and will force every legitimate user to re-authenticate (and will invalidate any data encrypted under the old AUTH_ENCRYPTION_SECRET, so plan the re-encryption of affected secrets). Ensure REQUIRE_USER_IN_DB is left at its production default of true so that administrator identity must be satisfied by a database-seeded account rather than by an attacker-supplied PLATFORM_ADMIN_EMAIL claim; the trade-off is that operators must then provision the admin user in the database rather than relying on the email-match bootstrap, and setting it to false in development re-opens this exact attack path. Verify after change that the running configuration no longer contains the literal 'my-test-key-but-now-longer-than-32-bytes' or 'my-test-salt' values in config.py or any deployed .env file. Until patched and rotated, treat the gateway as fully compromised if it was ever reachable with default secrets, and restrict network access to the gateway to trusted clients as an interim compensating control (at the cost of losing its intended remote/agent-facing reachability).
Affected VersionsENISA
Affected Packages
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
MCP Context Forge is an MCP (Model Context Protocol) gateway and administrative platform, and the flaw is classified under CWE-287 (Improper Authentication). The weakness is a chain of three mistakes in the shipped configuration and token-validation code: (1) mcpgateway/config.py and .env.example distributed a well-known static JWT_SECRET_KEY ('my-test-key-but-now-longer-than-32-bytes') along with a static AUTH_ENCRYPTION_SECRET, so any deployment that failed to override these values shares a publicly known signing secret; (2) verify_jwt_token() accepts HS256 (symmetric HMAC) tokens signed with that key, so anyone who knows the key can mint valid tokens; and (3) get_current_user() contains a bootstrap path that treats a token whose subject matches PLATFORM_ADMIN_EMAIL as a platform administrator whenever REQUIRE_USER_IN_DB is false, meaning no database-backed user record is needed. The combination yields a forged token that the gateway both validates cryptographically and elevates to administrator. Because validation is purely signature- and claim-based, the forged credential persists across password changes, user deletion, and session-revocation events as long as the static key and the bootstrap setting remain in place. The affected CPE is cpe:2.3:a:ibm:mcp-context-forge:*:*:*:*:*:*:*:* (all versions prior to 1.0.2), and the upstream fix commit (2af690f894b6e35f5f21190fdab1505f023a5272) replaces the placeholder secrets with __REPLACE_ME__ sentinels generated via python -m mcpgateway.scripts.init_secrets, adds a .secrets.baseline entry, and documents that the production default for REQUIRE_USER_IN_DB is true so the email-match bootstrap path is disabled by default.
Know when Mcp Context Forge 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Remote forging of admin tokens using a publicly known static key needs no auth or interaction (AV:N/AC:L/PR:N/UI:N), yielding full admin control (C:H/I:H/A:H); config dependency noted separately rather than raising AC.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
MCP Context Forge is an MCP gateway and administrative platform. Prior to 1.0.2, mcpgateway/config.py and .env.example ship a known JWT_SECRET_KEY, while verify_jwt_token() accepts HS256 tokens signed with that key and get_current_user() creates a platform administrator when the token subject matches PLATFORM_ADMIN_EMAIL and REQUIRE_USER_IN_DB is false. A remote unauthenticated attacker can therefore mint accepted administrator tokens without a database account. While the vulnerable signing key remains configured and the platform-admin bootstrap remains enabled, forged access survives password rotation, account deletion, and session revocation, allowing administrative disclosure, modification, and service disruption. This issue is fixed in version 1.0.2.
Technical POC Analysis
Bug class: CWE-287 Improper Authentication, compounded by CWE-321, CWE-798, and CWE-1188.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
IBM MCP Context Forge deployments that retain the vendor-shipped JWT signing key while platform-admin bootstrap is enabled are exposed to full administrative takeover, because attackers can mint administrator tokens that remain valid even after password resets, account deletions, and session revocations. This creates a durable compromise of the platform’s control plane, affecting any organization running affected versions without the documented production hardening. No public exploit identified at time of analysis, but leadership should treat the exposure as urgent due to the critical severity and the potential for administrative data disclosure, modification, and service disruption.
No vendor-released patch identified at time of analysis. Interim mitigations: rotate JWT_SECRET_KEY from the shipped default, set REQUIRE_USER_IN_DB=true, disable platform-admin bootstrap unless required, restrict network access to admin interfaces, monitor for tokens with PLATFORM_ADMIN_EMAIL subject, and upgrade to 1.0.2 or later when available.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Mcp Context Forge
View allSandbox escape in the python_sandbox_server subproject of IBM MCP Context Forge (versions up to and including 1.0.1) all
Stored cross-site scripting in IBM's MCP Context Forge (versions 0.2.0 up to but not including 0.3.1) lets an authentica
EUVD-2026-98769
NVD
CVE.org
EPSS
GitHub
Exploit-DB