CVE-2026-57147: PraisonAI: hardcoded JWT secret allows auth bypass
CRITICALPoC AVAILABLEPraisonAI Platform versions before 0.1.6 fall back to a publicly known JWT signing secret ("dev-secret-change-me") when PLATFORM_JWT_SECRET is unset, and the production guard is skipped because PLATFORM_ENV defaults to dev. Anyone on the network can therefore forge an HS256 token with an arbitrary identity and be accepted by every protected API route, with no credentials, no user interaction and low complexity (CVSS 9.8). The EPSS score is low (0.77%, top 46%) and there is no public exploit, Nuclei template or KEV listing, but the flaw is trivially reproducible from the public source and fix commit, so the real-world risk is higher than the score suggests. Any deployment that was stood up with default settings and exposed beyond localhost should be treated as potentially compromised. Upgrade to praisonai-platform 0.1.6 or later, set a strong random PLATFORM_JWT_SECRET and PLATFORM_ENV=production, rotate any secrets the platform can reach, and review API logs for unexpected identities.
What is the risk?
High practical risk for any internet- or network-reachable PraisonAI Platform instance running with default configuration. Exploitation needs only knowledge of the public default secret and the token format, with no authentication, privileges or user interaction. Statistical exploitation likelihood is low (EPSS 0.00772) and no public exploit or KEV entry exists, but the barrier is close to zero for anyone who reads the fix commit or advisory. Instances that set PLATFORM_JWT_SECRET explicitly are not affected. The impact is full confidentiality, integrity and availability loss on the platform and the agent workloads it manages.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| PraisonAI | pip | — | No patch |
Do you use PraisonAI? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade praisonai-platform to 0.1.6 or later (fix in PR #1793 / commit e0fb8e7; see GHSA-cwj8-7gp2-ggcw). 2) Set PLATFORM_JWT_SECRET to a long random value from a secrets manager and set PLATFORM_ENV=production so the production guard runs. 3) Rotate the JWT secret and invalidate all existing sessions, since tokens signed with the default secret remain valid until it changes. 4) Rotate LLM provider keys, tool credentials and any secrets accessible to the platform if exposure is suspected. 5) Restrict network access to the platform API (VPN, IP allowlist, reverse proxy with authentication). 6) Detect: look for tokens whose sub or email do not match known users, requests from unfamiliar IPs using valid-looking tokens, and unexpected agent or configuration changes. Also scan configs and environments for deployments still using the default secret.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-57147?
PraisonAI Platform versions before 0.1.6 fall back to a publicly known JWT signing secret ("dev-secret-change-me") when PLATFORM_JWT_SECRET is unset, and the production guard is skipped because PLATFORM_ENV defaults to dev. Anyone on the network can therefore forge an HS256 token with an arbitrary identity and be accepted by every protected API route, with no credentials, no user interaction and low complexity (CVSS 9.8). The EPSS score is low (0.77%, top 46%) and there is no public exploit, Nuclei template or KEV listing, but the flaw is trivially reproducible from the public source and fix commit, so the real-world risk is higher than the score suggests. Any deployment that was stood up with default settings and exposed beyond localhost should be treated as potentially compromised. Upgrade to praisonai-platform 0.1.6 or later, set a strong random PLATFORM_JWT_SECRET and PLATFORM_ENV=production, rotate any secrets the platform can reach, and review API logs for unexpected identities.
Is CVE-2026-57147 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-57147, increasing the risk of exploitation.
How to fix CVE-2026-57147?
1) Upgrade praisonai-platform to 0.1.6 or later (fix in PR #1793 / commit e0fb8e7; see GHSA-cwj8-7gp2-ggcw). 2) Set PLATFORM_JWT_SECRET to a long random value from a secrets manager and set PLATFORM_ENV=production so the production guard runs. 3) Rotate the JWT secret and invalidate all existing sessions, since tokens signed with the default secret remain valid until it changes. 4) Rotate LLM provider keys, tool credentials and any secrets accessible to the platform if exposure is suspected. 5) Restrict network access to the platform API (VPN, IP allowlist, reverse proxy with authentication). 6) Detect: look for tokens whose sub or email do not match known users, requests from unfamiliar IPs using valid-looking tokens, and unexpected agent or configuration changes. Also scan configs and environments for deployments still using the default secret.
What systems are affected by CVE-2026-57147?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, multi-agent orchestration platforms, AI agent management APIs.
What is the CVSS score for CVE-2026-57147?
CVE-2026-57147 has a CVSS v3.1 base score of 9.8 (CRITICAL). The EPSS exploitation probability is 0.77%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0012Valid AccountsAML.T0049Exploit Public-Facing ApplicationAML.T0091.000Application Access TokenCompliance Controls Affected
What are the technical details?
Original Advisory
PraisonAI is a multi-agent teams system. Prior to 0.1.6, praisonai_platform/services/auth_service.py assigns the public dev-secret-change-me value to JWT_SECRET when PLATFORM_JWT_SECRET is unset, and its production guard does not run when PLATFORM_ENV is also unset because that setting defaults to dev. A remote unauthenticated attacker can mint an HS256 token with an arbitrary sub and email, and the platform's AuthService._verify_token() and get_current_user dependency accept the forged identity for protected API routes. This vulnerability is fixed in praisonai-platform 0.1.6.
Exploitation Scenario
An attacker finds an exposed PraisonAI Platform instance through internet scanning or a leaked URL. They read the public source to get the default secret "dev-secret-change-me" and craft an HS256 JWT with the sub and email of an administrator. Sending it as a bearer token to protected endpoints, they are accepted as that user. They then list and modify agents, extract stored LLM API keys and tool credentials, alter agent instructions or tool bindings to run malicious actions, and use the agents' tool access to pivot into connected internal systems.
Weaknesses (CWE)
CWE-1188Initialization of a Resource with an Insecure DefaultPrimaryCWE-798Use of Hard-coded CredentialsPrimaryCWE-1188Initialization of a Resource with an Insecure DefaultCWE-798Use of Hard-coded CredentialsCWE-1188 — Initialization of a Resource with an Insecure Default: The product initializes or sets a resource with a default that is intended to be changed by the product's installer, administrator, or maintainer, but the default is not secure.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HReferences
Timeline
Related Vulnerabilities
CVE-2026-4816810.0PraisonAI: shell injection in Claude Action enables RCE
Same package: praisonaiCVE-2026-6144710.0PraisonAI: RCE via unsandboxed LLM code execution
Same package: praisonaiCVE-2026-614459.9PraisonAI: AICoder root RCE via unsanitized tool calls
Same package: praisonaiGHSA-vmmj-pfw7-fjwp9.9praisonai: sandbox escape gives RCE via codeMode tool
Same package: praisonaiCVE-2026-473929.9praisonaiagents: RCE via Python sandbox bypass
Same package: praisonai