Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDiscover exposed recipe serve endpoint
-
DeliverySend request with no API key/JWT
-
ExploitMiddleware fail-open forwards to recipe route
-
ExecutionReach recipe execution/input/output surfaces
-
ImpactTrigger connected agent tools
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a specific operator misconfiguration of |
| Impact | The raw CVSS 3.1 base score is 9.8 (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H), which on its face reads as a critical remote-unauthenticated compromise, but the description qualifies this heavily: the fail-open only manifests when an operator explicitly selects api-key or JWT auth in the recipe YAML yet fails to supply the corresponding secret both in YAML (api_key:/jwt_secret:) AND in the environment (PRAISONAI_API_KEY/PRAISONAI_JWT_SECRET). That is a specific misconfiguration precondition, so real-world exposure is narrower than PR:N/AC:L implies - I assess AC:H because the vulnerable state requires an operator to enable-but-not-fully-configure auth. Secondary signals are moderate: EPSS is 0.90% (58th percentile), there is NO CISA KEV listing, and SSVC records Exploitation:poc / Automatable:yes / Technical Impact:total - meaning proof-of-concept-level exploitability (the SnailSploit researcher demonstrated it) but no confirmed active in-the-wild exploitation. Net: this is a genuine authentication-bypass-by-fail-open with high technical impact where present, but exploitability is gated by a deployment mistake rather than being a universal default-config RCE, so it is a real priority for operators who enabled auth on recipe serve, not a blanket internet-wide emergency. Note the impact ceiling (C:H/I:H/A:H) depends on which tools the exposed recipe is wired to. |
| Exploit ScenarioDerived | An operator deploys |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Authentication bypass in PraisonAI's recipe serve command: when an operator selects auth: api-key or auth: jwt in a recipe YAML but omits the matching api_key:/jwt_secret: value and does not export PRAISONAI_API_KEY or PRAISONAI_JWT_SECRET, APIKeyAuthMiddleware and JWTAuthMiddleware take a fail-open branch and forward every non-/health request unauthenticated to the recipe execution, input, and output surfaces, potentially triggering connected tools. Remote unauthenticated attackers who can reach an exposed recipe-serve endpoint (CVSS:3.1/AV:N/PR:N/UI:N) can therefore act as if authenticated, though independent analysis raises attack complexity to AC:H because the rawe 9.8 vendor score only manifests under a specific operator mis-deployment - the fail-open does not occur when the secret is set or when authentication was never enabled. Publicly available exploit code exists per the SSVC exploitation signal (poc), EPSS is 0.90% (58th percentile), and the issue is not listed in CISA KEV; it is fixed in 4.6.58.
RemediationAI
Vendor-released patch: upgrade praisonai to 4.6.58 (or the newer 4.6.59 build referenced in the advisory's version data) via pip install --upgrade praisonai, per the release at https://github.com/MervinPraison/PraisonAI/releases/tag/v4.6.58 and advisory GHSA-j4hj-7hfh-g2f4. After upgrading, verify the change actually took effect: if you intend auth to be on, explicitly set BOTH the YAML api_key:/jwt_secret: value AND the PRAISONAI_API_KEY/PRAISONAI_JWT_SECRET environment variable, then confirm an unauthenticated request to a recipe route returns 401/403 - the fail-open condition is a silent no-op, so a successful curl without credentials means you are still exposed. If you cannot patch immediately, the effective compensating controls are: set the secret (this alone closes the bypass, at the cost of distributing and rotating a credential), or, if auth cannot be configured, bind recipe serve to 127.0.0.1 or place it behind an authenticating reverse proxy/firewall allowlist and block the recipe ports from untrusted networks - noting that /health remains intentionally unauthenticated in the middleware and must not be used as proof that auth is active. Be aware that recipe execution surfaces can invoke connected tools, so restricting who can reach the endpoint is the highest-value temporary mitigation; also secure the separate jobs API, which the advisory reports has no authentication of its own, and do not rely on the default configuration to protect an internet-exposed instance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PraisonAI is a Python multi-agent framework distributed on PyPI as praisonai (CPE cpe:2.3:a:mervinpraison:praisonai:*:*:*:*:*:*:*:*), and recipe serve launches an HTTP service exposing recipe execution endpoints. The root cause is CWE-306 (Missing Authentication for Critical Function), implemented as a classic fail-open pattern in praisonai/recipe/serve.py: both APIKeyAuthMiddleware.dispatch and JWTAuthMiddleware.dispatch compute expected_key = api_key or os.environ.get("PRAISONAI_API_KEY") (or the JWT secret equivalent) and, when that value is absent, execute return await call_next(request) - silently forwarding the request with no log entry and leaving request.state.user unset, so downstream recipe routes treat the caller as authenticated. The realistic trigger is a deployment where the YAML enables auth: api-key/auth: jwt but supplies no secret in YAML and no environment variable, i.e. the operator believes a single config line locked the surface down. The referenced upstream commit (2f9677abb2ea68eab864ee8b6a828fd0141612e1) is a broader hardening changeset that, beyond auth handling in praisonaiagents/server/server.py (adding _authorise_request bearer/X-Auth-Token checks returning 401), also adds SSRF validation and redirect re-validation to web crawl and spider tools, path-separator sanitization for FileMemory.user_id to block path traversal, and require_approval(risk_level="high") gating on ast_grep_search - useful context that this release family addressed several agent-tool risks simultaneously. The GHSA researcher also notes the adjacent jobs API lacks authentication entirely, meaning operators must separately secure that surface.
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
Network-reachable and unauthenticated (PR:N), but the fail-open only occurs under a non-default operator misconfiguration (auth enabled, secret omitted), so AC:H; full recipe/tool execution yields C:H/I:H/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to 4.6.58, recipe serve installs APIKeyAuthMiddleware or JWTAuthMiddleware when an operator selects api-key or JWT authentication, but each middleware forwards requests when PRAISONAI_API_KEY or PRAISONAI_JWT_SECRET and the corresponding recipe value are absent. Unauthenticated clients can then reach recipe execution, input, and output surfaces and may trigger connected tools despite the operator explicitly enabling authentication. This issue is fixed in 4.6.58.
Technical POC Analysis
CWE-306 (Missing Authentication for Critical Function), compounded by CWE-1188 (insecure default init).
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 recipe serve feature can grant unauthenticated network users access to recipe execution and connected tools when a specific deployment setting is misconfigured. Organizations using this feature in exposed environments face unauthorized use of AI-driven workflows and potential downstream automation risks, with publicly available exploit code existing. Leadership should prioritize exposure assessment and patching to protect sensitive operations.
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-77615
GHSA-j4hj-7hfh-g2f4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB