Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUser initiates PraisonAI agent session with code_intelligence profile
-
DeliveryAdversarial prompt injected into agent input
-
ExploitLLM calls ast_grep_rewrite with dry_run=False and broad filesystem path
-
ExecutionMissing @require_approval gate bypassed silently
-
Persistast-grep --update-all rewrites all matching source files
-
ImpactFunction returns 'No changes made' concealing modification from operator logs
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation 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 PraisonAI agent has ast_grep_rewrite registered as a callable tool, which occurs when the code_intelligence built-in profile is active or when the tool is manually registered. The ast-grep CLI must be installed in the system PATH. The LLM must invoke the function with dry_run=False - a parameter the model controls directly - and must supply a path and pattern that match target files. A human operator must initiate the agent session (UI:R per CVSS), but the file rewrite occurs without further operator interaction or approval once the session is running. Exploitation is not possible if the code_intelligence profile is disabled, if ast_grep_rewrite is not registered as a tool, if the ast-grep CLI is absent from the PATH, or if dry_run is externally forced to True. The attacker cannot exfiltrate file contents - impact is limited to in-place integrity modification of files accessible to the process user. |
| Impact | The CVSS 3.1 score of 6.1 (Medium) reflects a local attack vector (AV:L) and absent confidentiality impact, which moderate the score despite the high integrity impact of arbitrary file rewriting. The real-world risk is higher than this score suggests in agentic deployment contexts - the local vector is expected behavior for agent frameworks, and the relevant threat model is an LLM being manipulated via prompt injection to issue unauthorized tool calls, not a conventional local-access exploit. No EPSS data was available in the provided intelligence. The vulnerability is not in CISA KEV. Publicly available exploit code exists, confirmed by the proof-of-concept included in GHSA-cfxv-8fw8-rwpv, establishing that exploitation is practical without special tooling beyond installing praisonaiagents and the ast-grep CLI. A secondary silent-failure defect - the function returns 'No changes made' even after modifying files - substantially impairs detection and post-incident forensics, increasing operational risk beyond what the CVSS score captures. Organizations running automated agentic coding pipelines that expose the code_intelligence profile should treat this as a priority fix independent of the moderate base score. |
| Exploit ScenarioDerived | An attacker crafts adversarial input - via prompt injection in a document processed by the agent or a malicious task description - causing the LLM to call ast_grep_rewrite with dry_run=False, a destructive rewrite pattern, and a broad filesystem path such as the project root. Because the @require_approval gate is absent, the ast-grep CLI immediately rewrites all matching source files without operator confirmation, and the function then returns 'No changes made' to the LLM caller, suppressing any indication of the write in session logs. A self-contained proof-of-concept demonstrating this sequence is included in GHSA-cfxv-8fw8-rwpv. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Unauthorized filesystem mutation in praisonaiagents allows an LLM-controlled agent to rewrite arbitrary on-disk source files by invoking ast_grep_rewrite with dry_run=False, bypassing the @require_approval authorization gate uniformly enforced on every sibling mutation tool in the framework. All praisonaiagents releases prior to 1.6.58 are affected; the vulnerable function is registered as a top-level tool and exposed through the code_intelligence built-in profile. Exploitability is confirmed by a proof-of-concept in GHSA advisory GHSA-cfxv-8fw8-rwpv, and a secondary defect causes the function to return 'No changes made' to the caller even when files were modified, silently concealing the write.
RemediationAI
Upgrade praisonaiagents to version 1.6.58 or later using pip install --upgrade praisonaiagents; this release adds @require_approval(risk_level='high') to ast_grep_rewrite in ast_grep_tool.py, consistent with all sibling mutation tools. If immediate upgrade is not feasible, disable the code_intelligence built-in tool profile in your PraisonAI agent configuration to prevent ast_grep_rewrite from being registered as an available tool - note this also removes other ast_grep_* search capabilities as a side effect. As a secondary compensating control, ensure the PRAISONAI_AUTO_APPROVE environment variable is unset so that other approved tools still route through the interactive gate; this does not fix the missing decorator on ast_grep_rewrite but reduces the blast radius of adjacent tool misuse. The patch commit is at https://github.com/MervinPraison/PraisonAI/commit/2f9677abb2ea68eab864ee8b6a828fd0141612e1.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
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 CWE-862 (Missing Authorization). The praisonaiagents framework (cpe:2.3:a:mervinpraison:praisonaiagents) implements a @require_approval decorator that gates all mutation tools - file copy, move, delete, in-place edit, shell execution, and code execution - through an interactive approval flow that raises PermissionError on denial or when no approval backend is configured, ensuring no side effect occurs without operator consent. The ast_grep_rewrite function in ast_grep_tool.py is structurally a sibling of these mutation tools: it constructs an ast-grep CLI command with --update-all and an operator-supplied path, then calls subprocess.run() to perform in-place rewrites across all matching files. The function was shipped without the @require_approval decorator and without importing the approval module, has no _validate_path workspace check, and provides no cwd= sandboxing. It is registered in __init__.py and exposed via the code_intelligence built-in profile, making it directly accessible to any LLM agent using that profile.
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:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
Local tool callable by any LLM agent without additional OS privileges; human must initiate the session (UI:R); file rewriting yields integrity-only impact with no confidentiality or significant availability consequence.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.58, ast_grep_rewrite lacks the @require_approval decorator used by sibling mutation tools. With dry_run=False, an agent-controlled call can pass --update-all and a broad path to rewrite matching files without the expected authorization gate. This issue is fixed in version 1.6.58.
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.
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
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
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
Cross-site request forgery against the PraisonAI MCP HTTP-stream transport allows unauthenticated remote attackers to ex
Remote unauthenticated access to PraisonAI's legacy Flask API server allows attackers to execute configured agent workfl
Path traversal in praisonaiagents prior to 1.6.58 allows a low-privileged caller to write arbitrary JSON files to any pr
EUVD-2026-65501
GHSA-cfxv-8fw8-rwpv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB