Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLocate A2U server bound to network interface
-
ExploitSend unauthenticated /a2u/subscribe request
-
ExecutionReceive stream URL for events
-
ImpactRead agent responses, tool calls and metadata
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the operator to launch the dedicated A2U server via the CLI ('praisonai serve a2u') with the A2U_AUTH_TOKEN environment variable unset - in that state _authenticate_request() returns None and treats auth as disabled, because the A2U CLI path does not call _install_api_key_middleware() nor generate a bearer token, unlike the unified server path. Remote reachability additionally requires binding to an external interface (e.g. --host 0.0.0.0); a default loopback bind limits exposure to the local host. The exposed endpoints are /a2u/info, /a2u/subscribe, /a2u/events/{stream_name}, /a2u/events/sub/{id}, and /a2u/health. The key limiting factor is that pre-setting A2U_AUTH_TOKEN before startup enables the route-level token check (the PoV shows 401 with a token configured), so this is a config-dependent default-off authentication gap rather than an unconditionally reachable flaw. |
| Impact | This is a genuine but conditional exposure rather than a mass-exploitation emergency. The supplied CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/C:H/I:N/A:N, 7.5) describes unauthenticated network access with confidentiality-only impact, which is consistent with the advisory: anyone who can reach a running A2U server can subscribe to agent event streams without credentials. The vuln.today decision label is 'this_week' (not act_now/emergency), it is NOT listed in CISA KEV, and no EPSS score was provided, so there is no signal of active or widespread exploitation. The caveat that tempers the raw 7.5 is operator-dependent reachability: the flaw only becomes network-exploitable when the operator starts 'praisonai serve a2u' bound to an external interface (e.g. --host 0.0.0.0) AND without the A2U_AUTH_TOKEN environment variable set - the CLI neither generates a token nor installs the API-key middleware by default. A public PoV reference exists in the advisory but it is a local-only reproduction (a Starlette shim), so it demonstrates the missing auth check rather than a verified remote weaponized exploit. Net: a real priority for anyone exposing A2U on a network, but the PR:N network vector presumes an externally bound deployment that is not the secure-by-default posture the project documents elsewhere. |
| Exploit ScenarioDerived | An operator runs 'praisonai serve a2u --host 0.0.0.0 --port 8002' believing the published A2U fix (GHSA-f292-66h9-fpmf, 4.5.115) and the secure-by-default documentation protect it, but A2U_AUTH_TOKEN is unset so authentication is silently disabled. A remote attacker who can reach the port issues an unauthenticated POST to /a2u/subscribe and GETs the returned event stream, reading agent responses, tool calls, thinking/progress events, and stream metadata. A local-only PoV in the advisory confirms /a2u/info, /a2u/subscribe, and /a2u/health return 200 without a token on current head. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
The A2U agent event-stream server shipped with PraisonAI exposes unauthenticated endpoints for any operator who starts the documented praisonai serve a2u CLI entrypoint without first setting the A2U_AUTH_TOKEN environment variable, and this gap persists across versions 4.5.115 through 4.6.60 despite the earlier GHSA-f292-66h9-fpmf advisory claiming the unauthenticated-stream issue was fixed in 4.5.115. Remote unauthenticated attackers (CVSS PR:N) who can reach the service - which requires binding to an external interface such as --host 0.0.0.0, since the default loopback bind limits exposure to the local host - can subscribe to live agent event streams and read stream metadata, agent responses, tool calls and thinking/progress events, for a confidentiality-only impact rated 7.5. A public local-only PoV script and reproduction output exist in the advisory; that PoV is a harness shim rather than verified working exploit code against a live deployment, and there is no CISA KEV listing or other confirmation of active exploitation. The decisive mitigating control is that pre-setting A2U_AUTH_TOKEN before startup enables the route-level token check and returns 401, making this a config-dependent, default-off authentication gap rather than an unconditionally reachable flaw.
RemediationAI
Vendor-released patch: upgrade pip package praisonai to 4.6.61 or later, which is the version the project lists as fixed for the range >= 4.5.115, < 4.6.61; consult https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-jxcw-qp4h-6jfq for the authoritative fixed-version statement. If upgrading is not immediately possible, the effective compensating control is to set the A2U_AUTH_TOKEN environment variable to a strong random value before launching praisonai serve a2u, because that alone flips the route-level check from permissive to enforcing and returns 401 on unauthenticated /a2u/info and /a2u/subscribe (the advisory's PoV demonstrates exactly this) - the trade-off is that operators must distribute the token to legitimate clients and the CLI will not generate or print one for them. Additionally, keep the A2U server bound to the default loopback address rather than passing --host 0.0.0.0, which removes remote reachability entirely at the cost of local-only access, or otherwise restrict network access to the A2U port (8002 in the documented example) via firewall or ingress rules. Note that the unauthenticated /a2u/health endpoint still returns subscription and stream counts even in the hardening path described in the advisory, so treat that metadata as disclosable until a fixed release removes it.
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; its A2U (Agent-to-User) component streams agent activity to clients over FastAPI/Starlette routes. The root cause class is CWE-200 information exposure compounded by CWE-306 missing authentication for a critical function: authentication in create_a2u_routes() is strictly opt-in, reading A2U_AUTH_TOKEN from the environment and, if absent, having _authenticate_request() return None with the comment that auth is disabled in development mode. The dedicated A2U CLI path is where the incomplete fix lives - the Typer command in src/praisonai/praisonai/cli/commands/serve.py:570-585 accepts only --host and --port, forwards args = ["a2u", "--host", host, "--port", str(port)] to the shared handler in cli/features/serve.py:802-817, and _create_a2u_app() registers the routes directly at cli/features/serve.py:827-853 without ever calling _install_api_key_middleware(app, ...), which is exactly the hardening the unified server path applies. As a result the sensitive routes registered at endpoints/a2u_server.py:391-409 - /a2u/info, /a2u/subscribe, /a2u/events/{stream_name}, /a2u/events/sub/{id} and /a2u/health - remain open, and even the health endpoint leaks subscription and stream counts. The advisory's control experiment shows the route-level token check itself works (401 without a token once A2U_AUTH_TOKEN is configured), so the defect is the CLI wrapper's failure to generate or require a token and its failure to fail closed on external binds, not a broken authentication primitive. Suggested affected range is pip praisonai >= 4.5.115, <= 4.6.58, with the validated checkout at v4.6.57-4-g2f9677ab.
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:N/A:N
Once A2U is bound to the network without A2U_AUTH_TOKEN, an attacker needs no privileges or interaction to read event streams (PR:N/UI:N), yielding confidentiality-only impact (C:H, I:N, A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. From version 4.5.115 to before version 4.6.61, the published A2U advisory GHSA-f292-66h9-fpmf says unauthenticated A2U event streaming was fixed in praisonai 4.5.115. Current head still exposes the same A2U subscription and event routes without authentication when the operator starts the documented CLI entrypoint. The current CLI wrapper does not expose --api-key, does not install the common API-key middleware, and does not generate a token for A2U. It calls create_a2u_routes(app) directly. That helper only enforces auth if A2U_AUTH_TOKEN is already present; if the variable is missing, _authenticate_request() returns None and treats auth as disabled. This issue has been patched in version 4.6.61.
Technical POC Analysis
Class: missing authentication for a critical function (CWE-306), reported as CWE-200 because the consequence is unauthenticated disclosure of agent event data.
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 A2U event-stream server, when deployed with an external bind and without authentication, exposes live agent interactions-including tool calls and reasoning-to unauthenticated network observers. This confidentiality gap persists across versions 4.5.115 through 4.6.60 despite a prior advisory claiming a fix, meaning organizations using these versions may have a false sense of security. Leadership should prioritize immediate verification and mitigation to prevent potential leakage of sensitive operational data.
Set A2U_AUTH_TOKEN to enable authentication; restrict network access to the service (e.g., bind to localhost or use firewall rules).
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-108900
GHSA-jxcw-qp4h-6jfq
NVD
CVE.org
EPSS
Exploit-DB