CVE-2026-57148: praisonai-platform 0.1.4 still boots on the hardcoded JWT secret dev-secret-change-me (default-open production guard)
PraisonAI is a multi-agent teams system. Prior to 0.1.6, praisonaiplatform/services/authservice.py falls back to the public dev-secret-change-me HS256 signing key when PLATFORMJWTSECRET is unset, while the startup and token-issuance guards are disabled because PLATFORMENV also defaults to dev. An unauthenticated attacker can sign a JWT containing an attacker-chosen sub value, and AuthService.verifytoken() 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
praisonai-platformto a version that resolves this vulnerability.Fixed in 0.1.6 - Configuration
Set PLATFORM_JWT_SECRET so the AuthService does not fall back to the public dev-secret-change-me HS256 signing key when PLATFORM_JWT_SECRET is unset.
PraisonAI platform AuthService (praisonai_platform/services/auth_service.py) PLATFORM_JWT_SECRET = set to a non-default secret - Configuration
Set PLATFORM_ENV to a non-dev value so the startup and token-issuance guards are enabled (they are disabled because PLATFORM_ENV defaults to dev when unset).
PraisonAI platform PLATFORM_ENV = production (non-dev)
Event History
Frequently Asked Questions
Which deployments are exposed by the default configuration?
Deployments running versions before 0.1.6 are exposed when PLATFORM_JWT_SECRET is unset. In that condition, the service uses the public dev-secret-change-me signing key, and PLATFORM_ENV defaults to dev, disabling the startup and token-issuance guards.
What does an attacker need to exploit this issue?
An attacker does not need authentication or user interaction. They need to create an HS256 JWT signed with the known fallback secret and include an attacker-chosen sub value; impersonating a particular user or workspace owner requires knowing the target identifier.
What can an attacker do with a forged token?
AuthService._verify_token() accepts the forged token as an authenticated identity. This can enable impersonation of users or workspace owners and affect confidentiality, integrity, and availability.
What should be done if an immediate upgrade is not possible?
Set PLATFORM_JWT_SECRET to a non-public, securely managed value and ensure PLATFORM_ENV is configured appropriately rather than relying on its dev default. Upgrade to praisonai-platform 0.1.6 when possible.