Skip to main content

PraisonAI CVE-2026-56836

| EUVDEUVD-2026-108877 HIGH
Improper Authentication (CWE-287)
2026-10-23 GitHub_M GHSA-5qw8-f2g9-ff29 PYSEC-2026-3502
8.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify recipe server bound to non-localhost interface
  2. Exploit
    Send unauthenticated request to recipe API
  3. Execution
    Enumerate and run/validate arbitrary recipes
  4. Impact
    Trigger /admin/reload, workflow execution, or state changes

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

Exploitation requires that an operator start the Recipe HTTP server via the deprecated Typer path 'praisonai recipe serve' bound to a non-localhost interface (e.g. --host 0.0.0.0) without passing --api-key or a config file that sets auth; the default host is 127.0.0.1, which is not exposed. The /admin/reload endpoint is only reachable when --admin (enable_admin) is set. Presence of PRAISONAI_API_KEY in the environment does NOT protect this path, because the Typer command only sets auth when --api-key is passed explicitly. Limiting factors: the reachable-interface binding is a non-default choice (though the official Docker example uses --host 0.0.0.0); the hardened legacy feature handler and create_auth_middleware() fail closed, so only this specific Typer callsite is affected; and concrete impact depends on the configured recipes (tool-enabled/powerful recipes increase severity). No end-user interaction or authentication is required once the server is exposed.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, base 8.2, C:L/I:H) describes an easy, remote, unauthenticated flaw, and that is accurate for the attacker - once the Recipe HTTP server is reachable, no credentials are needed. However, the signals must be read together with the deployment precondition: the server defaults to host 127.0.0.1, and the vulnerability is only exposed when an operator runs 'praisonai recipe serve --host 0.0.0.0' (or otherwise binds to a non-localhost interface) via the deprecated Typer path without --api-key. So the PR:N/AV:N metrics are correct for the attacker but gated by a non-default operator action, which lowers real-world exposure relative to the raw score. No KEV listing is present, so this is NOT confirmed actively exploited. No EPSS score was provided in the input, so exploitation probability cannot be quantified here. A local-only proof-of-vulnerability exists in the GHSA advisory, but it is in-process (monkey-patched launcher + Starlette test client) and is not verified as working remote exploit code. The vendor/triage Decision label is 'this_week' (not act_now or emergency), consistent with a serious but config-dependent authentication-bypass issue rather than a mass-exploited emergency. Net: a genuine high-severity auth bypass worth patching promptly, but realistic risk is concentrated in deployments that bind the recipe server to a reachable interface (notably the Docker example in the docs, which uses --host 0.0.0.0).

Exploit ScenarioDerived

An operator deploys PraisonAI using the documented Docker pattern 'praisonai recipe serve --host 0.0.0.0 --port 8765' (or adds --admin), which routes through the deprecated Typer command and never sets config.auth, so create_app() attaches no API-key/JWT middleware. Any network caller that can reach the port sends unauthenticated requests to the recipe API (GET /v1/recipes, POST /v1/recipes/run, /stream, /validate) and, if --admin was used, POST /admin/reload. A public, local-only PoV exists in the advisory demonstrating the bypass (admin/reload and openapi return 200 with no auth); it is not verified as a working remote exploit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 23, 2026

PraisonAI versions 4.5.112 through 4.6.58 expose the Recipe HTTP API without authentication when an operator starts the deprecated Typer command praisonai recipe serve on a non-localhost interface without explicitly selecting API-key auth, allowing unauthenticated network callers to enumerate and execute recipes and, when --admin is enabled, invoke /admin/reload. The issue is an authentication bypass at the installed Typer callsite (CWE-287, with CWE-306 and CWE-862 also applicable); the hardened legacy feature handler rejects non-localhost binding without auth, and create_auth_middleware() fails closed with 503/401 when auth is selected but misconfigured. The CVSS 3.1 base score is 8.2 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N), and PraisonAI 4.6.59 contains the vendor fix; no CISA KEV entry or confirmed working remote exploit code is present in the supplied intelligence, and the advisory's public local-only proof-of-value harness exercises the bypass in-process without binding a socket, so it is not verified as working remote exploit code. Given the this-week decision label, prioritize upgrading internet-reachable or Docker-deployed instances.

RemediationAI

Upgrade to PraisonAI 4.6.59 or later, which patches the Typer recipe serve callsite; the advisory recommends removing or hard-disabling the deprecated Typer command, making it delegate to the hardened RecipeHandler.cmd_serve() path, and applying the same non-localhost/no-auth preflight guard in cli/commands/recipe.py. If upgrading immediately is not possible, do not bind the server to a non-localhost address-keep the default 127.0.0.1-and, when remote access is required, pass --api-key explicitly so config["auth"] is set, require clients to send the API-key header, and avoid --admin so /admin/reload is not exposed; also change --cors from * to a restricted origin list. Setting PRAISONAI_API_KEY in the environment alone does not protect this path, because the Typer command only sets auth when --api-key is passed or a config file selects it. Restrict network reachability to the Recipe port with firewall or network-policy controls as a compensating measure, and review the official Docker example that uses --host 0.0.0.0 without auth. A vendor-released patch is available: version 4.6.59; advisory: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-5qw8-f2g9-ff29.

Affected VersionsENISA

PraisonAI 4.5.112, < 4.6.59

Affected Packages

pypi praisonai fix: 4.6.59

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's installed console entrypoint is Typer-first: __main__.py routes recipe to the Typer app registered in cli/app.py (cli/commands/recipe.py) before the legacy dispatcher can run. The deprecated Typer recipe serve implementation accepts --host (default 127.0.0.1), --cors (default *), --admin, and --api-key, and it only sets config["auth"] to api-key when --api-key is supplied; launching with --host 0.0.0.0 --admin therefore produces a launch config of {"host":"0.0.0.0","config":{"cors_origins":"*","enable_admin":true}} with no auth key. create_app() in recipe/serve.py attaches API-key or JWT middleware only when config.get("auth") is set and not none, so unauthenticated requests reach GET /v1/recipes, POST /v1/recipes/run, POST /v1/recipes/stream, POST /v1/recipes/validate, and optionally POST /admin/reload. The root cause class is CWE-287 (improper authentication), with CWE-306 and CWE-862 also applicable because sensitive recipe and admin functions lack authentication/authorization on this callsite. The hardened legacy RecipeHandler.cmd_serve() refuses non-localhost binding when auth is none, and create_auth_middleware() returns 503 for selected API-key/JWT auth without a secret, confirming the intended boundary. The official Docker example CMD ["praisonai","recipe","serve","--host","0.0.0.0","--port","8765"] follows the vulnerable path; setting PRAISONAI_API_KEY in the environment does not enable auth here because the Typer command only sets auth when --api-key is passed or a config file selects it. The CPE for the affected package is cpe:2.3:a:mervinpraison:praisonai:*:*:*:*:*:*:*:*.

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 8.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
vuln.today AI 8.2 HIGH

Once bound to a reachable interface the recipe API is reachable with no auth (AV:N/AC:L/PR:N/UI:N); recipe execution/admin reload gives high integrity impact (I:H), limited read exposure (C:L), no availability claim (A:N).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:N/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
Low
Integrity
High
Availability
None

DescriptionCVE.org

PraisonAI is a multi-agent teams system. From version 4.5.112 to before version 4.6.59, PraisonAI's installed console entrypoint is Typer-first. In current releases, the recipe command is registered in the Typer app and praisonai recipe serve dispatches to the deprecated Typer command in src/praisonai/praisonai/cli/commands/recipe.py. That Typer command can start the Recipe HTTP server on a non-localhost interface with no authentication. It prints a deprecation warning, and then launches the server. Because config.auth is absent, create_app() does not attach the API-key or JWT middleware. Unauthenticated requests can then reach the recipe API and, when enabled, /admin/reload. This issue has been patched in version 4.6.59.

Technical POC Analysis

CWE-287 (Improper Authentication), with CWE-306 and CWE-862 as the advisory's secondary weaknesses.

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 4.5.112 through 4.6.58 can expose its Recipe HTTP API without authentication when the deprecated praisonai recipe serve command is run on a network interface. Any unauthenticated network caller reaching that service could enumerate and execute recipes, and with the admin option enabled also trigger server reload, giving unauthorized users meaningful ability to manipulate AI workflow execution. Leadership should care because this is not a theoretical parsing bug: it directly affects the AI automation layer, and operators who followed older guidance may now be running internet- or intranet-reachable services that silently lack authentication.

Business Impact: High
Compensating Controls

Apply vendor patch (PraisonAI 4.6.59). Until upgraded, bind the Recipe API to localhost only, place it behind an authenticating reverse proxy or network ACL, and disable the --admin option.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche open-source multi-agent AI framework, limited production footprint
Data Quality
3 sources
Confidence: Low

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
High

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
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