Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAccess exposed PraisonAI agent endpoint
-
DeliverySupply crafted prompt/tool argument with host path
-
ExploitInvoke artifact_head/tail/grep/chunk on unvalidated path
-
ExecutionRead file outside artifact base directory
-
ImpactExfiltrate .env/credentials/SSH keys
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 the application to have enabled the Dynamic Context Discovery feature and to have constructed its Agent with tools=ctx.get_tools() (from setup_dynamic_context()), so that artifact_head, artifact_tail, artifact_grep, and artifact_chunk are callable; it is NOT present in PraisonAI deployments that do not wire up these artifact helper tools. The attacker must be able to influence those tool arguments (via prompt, user, or tool-caller input) and supply the target path - typically an absolute path or a known/guessable host path such as a project .env file, cloud credential file, SSH key, source file, or prior-run terminal/history artifact. Limiting factors: disclosure is restricted to files readable by the PraisonAI process UID; the issue is read-only (no integrity or availability impact); and network/unauthenticated reachability applies only when the agent is exposed over a public chat/API surface - deployments that gate agent access behind authentication reduce this to an authenticated-attacker issue (vendor suggests PR:L). |
| Impact | This is a genuine but deployment-conditional confidentiality issue rather than a universally remote-exploitable critical flaw. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5) treats it as network-reachable, unauthenticated, low-complexity with high confidentiality impact and no integrity/availability effect, which is consistent with CWE-22/CWE-200 arbitrary host-file read. However, the network/unauthenticated framing is contingent: the advisory itself states AV:N and PR:N apply only when an application exposes a PraisonAI agent over a network chat/API surface AND wires up ctx.get_tools() from Dynamic Context Discovery, and that authenticated deployments should score PR:L - so the real-world attack surface is narrower than the raw 7.5 suggests. No EPSS score is provided and the CVE is not in CISA KEV, so there is no signal of widespread or active exploitation; the vuln.today Decision label is 'this_week', indicating prioritized but not emergency remediation. A local PoV is documented in the GHSA (positive control plus outside-base-dir reads of head/grep/chunk), so the mechanism is demonstrably real, but this is proof-of-concept against the library - not evidence of in-the-wild use. Net: patch this week for any deployment that actually exposes Dynamic Context Discovery artifact tools to lower-trust input; for deployments that do not enable those tools or only expose them to trusted operators, real risk is substantially lower than the CVSS number implies. |
| Exploit ScenarioDerived | An organization runs a public or multi-tenant PraisonAI chat/agent endpoint whose agent was built with tools=ctx.get_tools() from setup_dynamic_context(). A lower-trust user sends a prompt that induces the agent to call artifact_head (or artifact_tail/grep/chunk) with an absolute path such as /app/.env or ~/.ssh/id_rsa, and the tool reads and returns the file contents because no base-directory containment or artifact-metadata check is enforced. A local PoV in the advisory confirms the behavior against PyPI 4.6.58, reading a secret file placed outside the configured artifact base directory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
PraisonAI 3.8.1 through 4.6.58 lets an attacker who can influence the arguments of the Dynamic Context Discovery artifact helper tools read arbitrary files from the host running the PraisonAI process. The artifact_head, artifact_tail, artifact_grep and artifact_chunk helpers accept a caller-supplied artifact_path and wrap it straight into an ArtifactRef without checking that the path lies under the configured artifact base directory or was actually produced by the artifact store, so an absolute path such as a project .env file, cloud credential, SSH key or source file is read back verbatim. The flaw only exists in deployments that enable setup_dynamic_context() and pass ctx.get_tools() to an Agent, and because the score assumes the agent is exposed over a network surface with unauthenticated prompts (CVSS:3.1/AV:N/AC:L/PR:N/UI:N with confidentiality-only impact), authentication gating on that surface would lower the practical risk. The issue is patched in 4.6.59; the vendor advisory contains a local-only proof-of-value script, it is not verified as working exploit code against a remote deployment, and there is no KEV listing.
RemediationAI
Upgrade the praisonai package to 4.6.59, the version in which the vendor fixed the issue (vendor advisory: https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-j7qx-p75m-wp7g); no backport to the 3.8.x, 4.0.x or 4.5.x lines is documented. The vendor's recommended hardening is to stop passing raw filesystem paths to artifact tools: accept artifact_id plus optional run_id and agent_id and resolve them through the store's metadata/index, or, if path arguments must be kept for compatibility, resolve the supplied path and reject it unless it falls under artifact_store.base_dir.resolve(), and require a valid .meta sidecar so files not created by FileSystemArtifactStore.store() are unreadable through the tools, applying the same containment to load(), head(), tail(), grep(), chunk() and delete(). Until the upgrade is deployed, the effective compensating control is to not expose the artifact helper tools to untrusted or lower-trust prompts at all, i.e. omit ctx.get_tools() from agents reachable by external users, which removes the documented large-output exploration capability for those agents; where the feature is required, gate the agent's chat/API surface behind authentication and input review, which reduces but does not eliminate the exposure because any principal able to influence tool arguments can still request arbitrary paths. Running the PraisonAI process under a low-privilege account with no read access to credential files, SSH keys or parent project directories limits what can be disclosed at the cost of the agent losing access to legitimate local resources it may need. Note that the vendor's context-security guidance to use relative paths and review ignore rules does not stop this attack, since the helpers accept absolute host paths directly.
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
The root cause is a classic CWE-22 path traversal (also tracked as CWE-200 exposure) inside PraisonAI's context subsystem: src/praisonai/praisonai/context/queue.py builds artifact tools via create_artifact_tools(), which instantiates a FileSystemArtifactStore bound to a base_dir, but the read paths never consult that base_dir for containment. Each of artifact_head, artifact_tail, artifact_grep and artifact_chunk constructs ArtifactRef(path=artifact_path, ...) directly from the untrusted argument, and the corresponding store methods in artifact_store.py then do Path(ref.path).exists() and open() on that path with utf-8/replace decoding. There is no Path(path).resolve().relative_to(base_dir.resolve()) check, no artifact identifier or manifest lookup, and no requirement that the target file carry a valid .meta sidecar or appear in artifact_list(). The documented design intent is that middleware queues large tool outputs as artifacts and hands the agent compact opaque references it can explore with artifact_tail and artifact_grep; the implementation instead treats a raw filesystem path as the reference. The CPE cpe:2.3:a:mervinpraison:praisonai identifies the pip package, and the vendor validated the behaviour across 3.8.1, 4.0.0, 4.5.113, 4.6.33, 4.6.34, 4.6.40, 4.6.50 and 4.6.58, using a temporary artifact base directory, a legitimate stored artifact as a positive control, and a separate outside-secret.txt file that artifact_list() correctly did not enumerate yet artifact_head, artifact_grep and artifact_chunk happily returned. The trigger is not a race, heap condition or parsing bug; it is the absence of a containment check on a fully caller-controlled path. Exploitation is conditional on the application having enabled Dynamic Context Discovery and wired tools=ctx.get_tools() into an Agent, and reachability of that agent by an untrusted prompt, user or tool caller. Disclosure is bounded by the file permissions of the PraisonAI process UID and is read-only, so integrity and availability are unaffected.
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 accepting attacker-controlled tool arguments with no auth or race needed (AV:N/AC:L/PR:N/UI:N); read-only host-file disclosure gives C:H, I:N, A:N, scope unchanged.
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 Discovery feature exposes artifact helper tools through ctx.get_tools(). The implemented artifact tools do not enforce that the supplied artifact_path is an artifact created by the configured store or that it lives under the configured artifact base directory. Instead, artifact_head, artifact_tail, artifact_grep, and artifact_chunk wrap the caller-supplied path directly into an ArtifactRef and then read it from the host filesystem. As a result, any prompt/user/tool-caller that can influence those tool arguments can read files readable by the PraisonAI process, such as project .env files, cloud credentials, SSH keys, source files, or other local data. This issue has been patched in version 4.6.59.
Technical POC Analysis
CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), with a CWE-200 information-exposure consequence.
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 vulnerability that allows an attacker to read arbitrary files from the host system when specific artifact helper tools are enabled and exposed over a network. This could expose sensitive data such as credentials, SSH keys, or source code to unauthorized parties. Leadership should prioritize patching because the flaw is remotely exploitable without authentication and directly threatens data confidentiality.
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-108875
GHSA-j7qx-p75m-wp7g
NVD
CVE.org
EPSS
Exploit-DB