Skip to main content

PraisonAI Platform EUVDEUVD-2026-78396

| CVE-2026-57148 CRITICAL
Improper Authentication (CWE-287)
2026-09-15 GitHub_M GHSA-f38v-77qj-h4jq PYSEC-2026-3525
9.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Read public default JWT secret from source
  2. Delivery
    Forge HS256 token with target sub/email
  3. Exploit
    Send token to platform API
  4. Execution
    Pass _verify_token as chosen identity
  5. Impact
    Impersonate 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 (python -m praisonai_platform --host 0.0.0.0 --port 8000 / uvicorn equivalent) does not, so the vulnerable state is the shipped default rather than an edge case. The two conditions are: (1) PLATFORM_JWT_SECRET unset (falls back to public 'dev-secret-change-me'), and (2) PLATFORM_ENV left at its default 'dev', which leaves the startup and token-issuance guards default-open. The only practical limiting factor is that workspace-owner takeover requires the attacker to know the target owner's user/sub identifier; arbitrary user impersonation needs only a valid target id. Deployments that explicitly set a strong PLATFORM_JWT_SECRET are not exploitable.

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 sub to a known target user or workspace-owner id with a future exp. They send this forged token to the platform API (default entry point python -m praisonai_platform --host 0.0.0.0 --port 8000, which sets neither PLATFORM_JWT_SECRET nor PLATFORM_ENV); AuthService._verify_token() accepts it and returns that identity, granting full impersonation. No public exploit is published, but forgery is trivial and requires no account.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

praisonai-platform < 0.1.6
PraisonAI < 4.6.51

Affected Packages

pypi praisonai-platform fix: 0.1.6
euvd praisonai fix: 4.6.51

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

Vendor (GitHub_M) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 9.8 CRITICAL

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).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Low
niche open-source multi-agent AI platform, limited production footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-61447 CRITICAL POC
10.0 Jul 11

Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-61439 HIGH POC
8.7 Jul 11

System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-61429 HIGH POC
8.4 Jul 11

Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy