Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed PraisonAI Dynamic Context tool surface
-
DeliveryCall history/terminal tool with crafted run_id and agent_id
-
ExploitAbsolute path or ../ escapes configured base_dir
-
ExecutionTool reads .jsonl/.log outside storage
-
ImpactDisclose secrets, credentials, and prior context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection 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 the deployed application expose PraisonAI's Dynamic Context agent-callable tool factories - create_history_tools() (history_search/history_tail/history_get) or create_terminal_tools() (terminal_tail/terminal_grep/terminal_commands) - to a lower-trust prompt or caller that can supply the run_id and agent_id tool arguments. The attacker must set run_id to an absolute path or include ../ traversal in agent_id, and the target file must be reachable with the tool-imposed suffix (.jsonl for history tools, .log for terminal tools) and readable by the PraisonAI process. Limiting factors: impact is read-only (confidentiality only); only files ending in .jsonl/.log are disclosable; the vulnerability is only reachable if an operator has wired these tools into an untrusted agent surface (not an automatic default of merely installing the package); affected versions are 3.8.1 through 4.6.58 only. |
| Impact | The input CVSS of 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) reflects a network-reachable, low-complexity, unauthenticated read-only disclosure, which is directionally reasonable but conditional: the 'network' and 'no privileges' assumptions only hold when a PraisonAI application actually wires the Dynamic Context history/terminal tool factories (create_history_tools/create_terminal_tools) into an exposed, lower-trust agent chat/API surface - the advisory itself notes deployments requiring authenticated access should score PR:L. No EPSS score is provided and the CVE is not listed in CISA KEV, so there is no evidence of active exploitation; the exploitation signal rests on the vuln.today 'this_week' decision label and a vendor-supplied local proof-of-value. The GHSA advisory includes a detailed local PoV with recorded output, but it is a local filesystem-boundary demonstration (it 'does not start a server, contact a third-party target, or use real credentials'), not a verified remote weaponized exploit against a live deployment. Net: this is a credible, well-documented CWE-22 confidentiality issue worth near-term patching for anyone exposing these tools to untrusted prompts, but it is not a mass-exploited internet-wide emergency - real-world risk hinges almost entirely on whether an operator exposes the Dynamic Context tools to lower-trust callers, which is a deployment choice rather than a default guaranteed by the library. |
| Exploit ScenarioDerived | A PraisonAI application exposes the Dynamic Context history/terminal agent tools to a public or lower-trust chat endpoint. An attacker interacting with that agent supplies a crafted run_id (an absolute path) and agent_id (containing ../) as tool arguments, causing history_tail/history_get or terminal_tail/terminal_grep to resolve to and read .jsonl/.log files outside the configured base directory - potentially disclosing conversation history, terminal output, command logs, tokens, or cloud credentials. A local PoV in the GHSA advisory confirms the path-containment bypass against PyPI 4.6.58, but it is a local demonstration, not a verified remote exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Path traversal in PraisonAI's Dynamic Context module lets a caller of the exported agent tools (history_search/history_tail/history_get and terminal_tail/terminal_grep/terminal_commands) supply a run_id that is an absolute path, or an agent_id containing '../', so that the underlying HistoryStore and TerminalLogger build file paths that resolve outside the configured base directory. Versions 3.8.1 through 4.6.58 are affected; the flaw is confidentiality-only and constrained, since readable targets must carry the tool-imposed suffix (.jsonl for history tools, .log for terminal tools) and be readable by the PraisonAI process. The vendor has released 4.6.59, no CISA KEV entry or confirmed active exploitation is reported, and the advisory ships only a local proof-of-value harness that exercises the traversal against an installed package - a public PoC reference exists; it is not verified as remote working exploit code.
RemediationAI
Vendor-released patch: upgrade praisonai to 4.6.59, which introduces containment validation for Dynamic Context paths; the advisory's recommended fix treats run_id and agent_id as logical identifiers only, rejecting absolute paths, separators and traversal components, and additionally resolves each candidate and rejects anything not under base_dir.resolve() across history append/read/search/clear/export and terminal log/read/search/clear/export. If upgrading immediately is not possible, stop wiring create_history_tools() and create_terminal_tools() into any prompt, chat or API surface reachable by lower-trust users - the trade-off is that agents lose history search/tail and terminal log inspection entirely - and as a partial control, run the PraisonAI process under an account whose read access excludes sensitive .jsonl and .log files, acknowledging that this only narrows which suffixed files can be disclosed and does not fix the traversal. Where these tools must stay exposed, restrict callers to trusted operators until 4.6.59 is deployed. See https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-22cj-m4wf-fv2c for the full fix guidance.
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
CWE-22 (path traversal) in the filesystem-backed storage layer of PraisonAI's Dynamic Context feature, which persists conversation history and terminal session logs as per-run, per-agent files. HistoryStore._get_history_path() computes base_dir / run_id / 'history' / f'{agent_id}.jsonl' and TerminalLogger._get_log_path() computes base_dir / run_id / 'terminal' / f'{agent_id}.log'; both treat logical identifiers as path segments without rejecting absolute paths, path separators or '..' components, and neither validates that the resolved candidate stays beneath self.base_dir.resolve() (no relative_to() containment check). The agent-callable tool factories pass caller-supplied run_id and agent_id straight through, so an absolute run_id relocates the lookup root and a '../' sequence in agent_id escapes it. The advisory also maps this to CWE-200 (exposure of sensitive information): disclosed .jsonl/.log files may contain conversation history, prompts, terminal output, tokens, API keys and cloud credentials. Exposure is conditional on an application wiring these tool factories into a lower-trust prompt or chat/API surface; installing the package alone does not expose the tools. The trigger is a crafted tool argument, not a memory-safety condition - the advisory demonstrates it with a local proof-of-value harness against praisonai 4.6.58.
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
Network-exposed agent tool accepting attacker-chosen run_id/agent_id gives AV:N/AC:L/PR:N/UI:N; read-only file disclosure of secret-bearing logs gives C:H, I:N, A:N; PR:L applies if the agent surface requires authentication.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
PraisonAI is a multi-agent teams system. From version 3.8.1 to before version 4.6.59, PraisonAI's Dynamic Context module provides filesystem-backed history and terminal-log storage. The module also exports agent-callable tool factories. Those tools accept run_id and agent_id arguments from the tool caller. The underlying stores join those values into filesystem paths without rejecting absolute paths or .. traversal. Because run_id can be an absolute path and agent_id can contain traversal, a lower-trust prompt/user that can call these tools can read .jsonl and .log files outside the configured Dynamic Context base directory. This issue has been patched in version 4.6.59.
Technical POC Analysis
CWE-22 (Path Traversal), with the advisory also tagging CWE-200.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
PraisonAI versions 3.8.1 through 4.6.58 contain a high-severity path traversal flaw that could allow attackers to read sensitive files accessible to the AI agent's process. This affects any organization using PraisonAI for agent-based automation, potentially exposing configuration data, logs, or other confidential information. While no active exploitation has been observed, the availability of a public proof-of-concept and the ease of exploitation warrant immediate remediation.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
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-108874
GHSA-22cj-m4wf-fv2c
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB