Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRead public default JWT secret from source
-
DeliveryForge HS256 token with target sub/email
-
ExploitSend token to platform API
-
ExecutionPass _verify_token as chosen identity
-
ImpactImpersonate user/workspace owner
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 | Exploitable against DEFAULT deployments of praisonai-platform <0.1.6 (and PraisonAI <4.6.51) that do not explicitly export a strong PLATFORM_JWT_SECRET - which the documented startup command ( |
| Impact | All exploitability signals in the CVSS vector align and are genuinely justified: AV:N (JWT verified over the network API), AC:L (mint a token with any JWT library), PR:N and UI:N (no account, no victim interaction). Critically, PR:N is NOT overstated here - unlike most 9.8 authentication flaws, the signing secret 'dev-secret-change-me' is a public string readable in open-source, so the attacker truly needs zero prior privilege. This makes the 9.8/Critical rating well-calibrated. Countervailing signals temper urgency: EPSS is only 0.53% (43rd percentile), there is no CISA KEV listing and no public exploit code, so this is currently a latent high-severity issue rather than one under observed mass exploitation. The most important nuance from the GHSA advisory is that this CVE exists specifically to correct the record on GHSA-3qg8-5g3r-79v5 (the sibling CVE-2026-57147), which declared the flaw fixed in 0.1.4 - it was NOT; 0.1.4 duplicated the same default-open guard into a second function instead of failing closed, so 0.1.4 and main HEAD remain fully vulnerable. Real fix is 0.1.6. Bottom line: a real, high-priority patching target for anyone actually running praisonai-platform, but low real-world exploitation pressure so far. |
| Exploit ScenarioDerived | An attacker reads the hard-coded default secret 'dev-secret-change-me' directly from the public PraisonAI source, then uses any JWT library to sign an HS256 token setting |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Unauthenticated authentication bypass in praisonai-platform prior to 0.1.6 (and PraisonAI before 4.6.51) allows a remote attacker to forge HS256 session JWTs using the publicly known default signing key 'dev-secret-change-me' and be accepted as any identity the attacker names in the token's sub claim, including a workspace owner. The vulnerable state is the shipped default: the documented startup command sets neither PLATFORM_JWT_SECRET (so the hardcoded fallback is used) nor PLATFORM_ENV (which stays at 'dev', leaving the startup and token-issuance guards default-open). CVSS 3.1 scores this 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), consistent with an unauthenticated full-compromise primitive; EPSS is low at 0.53% (43rd percentile), no public exploit code was identified at time of analysis, and there is no CISA KEV listing, although the flaw is trivially exploitable against default deployments and the only practical constraint is that workspace-owner takeover requires knowing the target owner's user/sub identifier.
RemediationAI
Vendor-released patch: praisonai-platform 0.1.6 (with PraisonAI 4.6.51 for the umbrella package) - upgrade immediately, since 0.1.4 is not a fix despite GHSA-3qg8-5g3r-79v5 previously claiming otherwise; consult https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-f38v-77qj-h4jq and the release notes at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.51 for the exact artifacts. In parallel, and as the essential compensating control if an upgrade cannot be immediate, export a strong random PLATFORM_JWT_SECRET (for example a 32+ byte random value) in the service environment and set PLATFORM_ENV to a non-dev value - this closes the bypass without changing application code, because the verifier then rejects tokens signed with the public placeholder; the trade-off is that all previously issued tokens signed with the old secret are invalidated and existing sessions must re-authenticate, and any orchestration manifests, Dockerfiles, or compose files must be updated or the setting will be absent on restart (the shipped defaults set neither variable). Do not rely on network exposure limits as a mitigation, since the vulnerable state is reachable over the normal HTTP API; if the service cannot be patched or configured promptly, take it off untrusted networks entirely or place it behind an authenticating reverse proxy that enforces its own credentials, accepting that this only partially compensates because any internal caller reaching the API directly can still forge identities. After remediation, review logs for API calls bearing tokens whose sub values were not issued by the legitimate token endpoint, and rotate any secrets or workspace data accessible to owner-level identities, as forged sub claims grant workspace-owner authority when a target identifier is known.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The defect sits in praisonai-platform/services/auth_service.py, where the JWT signing secret resolves to the hardcoded literal 'dev-secret-change-me' whenever PLATFORM_JWT_SECRET is unset, and where AuthService._verify_token() validates incoming bearer tokens against that same key. This chains CWE-1188 (insecure default initialization) and CWE-798 (use of hard-coded credentials) into the root-cause class CWE-287 (improper authentication). Because HS256 is a symmetric MAC algorithm, knowledge of the verification key is sufficient to mint valid tokens; an attacker needs only any standard JWT library to produce HS256({"sub": <target id>, ...}, "dev-secret-change-me"), and the server-side verifier will return an authenticated identity for the attacker-chosen subject. The fallback is compounded by a default-open guard: PLATFORM_ENV defaults to 'dev', so the production safety checks that should refuse to boot or issue tokens with the placeholder secret never fire. A repository-wide search shows both environment variables appear only at the two guard sites and in test fixtures, with no shipped Dockerfile, compose file, or deployment documentation setting them, meaning the documented entry point (python -m praisonai_platform --host 0.0.0.0 --port 8000 or the equivalent uvicorn invocation of praisonai_platform.api.app:app) launches in the vulnerable configuration. The prior advisory GHSA-3qg8-5g3r-79v5 declared the issue fixed in 0.1.4, but that change merely duplicated the same default-open guard into a second function rather than failing closed, so 0.1.4 remained exploitable; the fix landed only in praisonai-platform 0.1.6, referenced by commit e0fb8e7dd1ee6759c18ed07f436c21dbd9c20747 and PR #1793, with the corresponding PraisonAI release tagged v4.6.51.
Know when Praisonai 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
Signing secret is public in source so PR:N is genuine, not overstated; remote API token forgery (AV:N/AC:L/UI:N) yields full identity takeover (C:H/I:H/A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to 0.1.6, praisonai_platform/services/auth_service.py falls back to the public dev-secret-change-me HS256 signing key when PLATFORM_JWT_SECRET is unset, while the startup and token-issuance guards are disabled because PLATFORM_ENV also defaults to dev. An unauthenticated attacker can sign a JWT containing an attacker-chosen sub value, and AuthService._verify_token() accepts it as an authenticated identity, enabling user or workspace-owner impersonation when a target identifier is known. This vulnerability is fixed in praisonai-platform 0.1.6.
Technical POC Analysis
The defect is in praisonaiplatform/services/authservice.py in praisonai-platform <= 0.1.4, including the version the prior GHSA-3qg8 advisory declared patched.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
PraisonAI's platform component (praisonai-platform before 0.1.6 and PraisonAI before 4.6.51) ships with a hardcoded JWT signing secret, allowing anyone who can reach the service to impersonate any user, including a workspace owner, without credentials. Because the exposed state is the vendor's own documented startup default, any deployment that has not been hardened or upgraded is effectively open to full takeover, putting workspace data, agent configurations and platform integrity at risk and potentially triggering breach-notification obligations. Leadership should treat affected instances as compromise-capable until patched and their authentication logs have been reviewed.
Apply vendor patch.
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.
Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th
PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans
WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att
PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne
System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection
Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller
SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou
Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv
Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec
Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u
Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d
Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf
EUVD-2026-78396
GHSA-f38v-77qj-h4jq
NVD
CVE.org
EPSS
Exploit-DB