Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessShare crafted github: template URI
-
ExploitVictim loads attacker-supplied template
-
ExecutionUnsanitized ref escapes cache root
-
Impactshutil.rmtree deletes outside directory
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 | Requires PraisonAI (>= 2.6.0, <= 4.6.57) configured to accept GitHub template sources - the advisory notes allow_any_github permits GitHub sources by default - and a user or automated service must be induced to load an attacker-supplied github: template URI whose ref contains traversal segments (e.g. @../../../../../../outside-target). The outside-cache .cache_meta.json write occurs on the first load; the more damaging shutil.rmtree directory deletion additionally requires that a normal cache entry for the same owner/repo/template prefix already exists. Impact is strictly bounded by the filesystem permissions of the PraisonAI process, and the CVSS UI:R reflects that nothing is triggered without the victim loading the malicious URI. Network access is not required for the write/delete primitive itself (the PoV disables networking entirely). |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H, base 8.1 High) describes a network-reachable, low-complexity, unauthenticated flaw gated only by user interaction, with no confidentiality loss but high integrity and availability impact - consistent with the described outside-cache file write and attacker-chosen directory deletion. No EPSS score was supplied, so exploitation probability cannot be quantified from the input. There is no CISA KEV listing, so this is not confirmed as actively exploited; however the GHSA advisory publishes a working local-only PoV reproducer plus a release sweep confirming the bug across every tested tag (v2.6.0 through v4.6.57 and current head), so a public proof-of-concept clearly exists and the barrier to weaponization is low - but POC availability must not be conflated with active exploitation. No SSVC automatable/technical-impact decision fields were provided; the only prioritization signal is vuln.today's 'this_week' label, which maps to a real but non-emergency priority. Practical risk is moderated by two factors the raw score understates: exploitation requires the victim to load an attacker-supplied template URI (UI:R), and the destructive shutil.rmtree primitive additionally requires a pre-existing normal cache entry for the same owner/repo/template prefix - without it, impact is limited to a single .cache_meta.json write outside the cache. Net assessment: a genuine this-week-priority integrity/availability issue for PraisonAI users who load untrusted templates, not a drop-everything emergency, with no evidence of widespread or targeted exploitation in the provided data. |
| Exploit ScenarioDerived | An attacker publishes or shares a PraisonAI GitHub template URI whose ref contains a path-traversal sequence (e.g. github:attacker/repo/template@../../../../../../target) and induces a user or automated service to load it. On first load the resolver writes .cache_meta.json outside the cache root, and if a normal cache entry for the same owner/repo/template already exists, a subsequent load reaches shutil.rmtree and deletes the attacker-chosen directory. The GHSA advisory includes a working local-only PoV that demonstrates both the outside-cache write and the directory deletion without any network access. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Path traversal in PraisonAI 2.6.0 through 4.6.57 lets an attacker-supplied GitHub template URI write outside the template cache and, once a normal cache entry exists for the same owner/repo/template prefix, delete an attacker-chosen directory via shutil.rmtree. The resolver keeps the user-controlled template path and ref verbatim and the cache layer joins them into ~/.praison/cache/templates/github/<owner>/<repo>/<template>/<ref> without normalization or a boundary check, so a ref such as @../../../../../../outside-target escapes the cache root; nothing triggers unless a user or automated service is induced to load the crafted github: URI (CVSS 3.1 8.1 High, AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H), which is why PraisonAI rates the flaw this_week rather than an emergency. A public PoC reference exists in the GitHub advisory in the form of a local-only reproducer that disables networking; it is not verified as working exploit code, there is no CISA KEV listing, and no EPSS data was supplied. The project patched the issue in 4.6.59.
RemediationAI
Vendor-released patch: upgrade praisonai to 4.6.59, which fixes the issue; the advisory is at https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-f44v-7qgw-9gh9. If you cannot upgrade immediately, note that GitHub template sources are allowed by default through allow_any_github, so the practical compensating control is to disable that permissive setting and restrict template loading to a vetted allowlist of owner/repo/template combinations - the trade-off is that legitimate third-party templates must be enumerated manually. Second, refuse any github: template URI whose ref or path contains '..', path separators or absolute forms before it reaches TemplateLoader.load(); the trade-off is that unusual ref formats will be rejected, while ordinary pinned tags such as @v1.0.0 continue to work. Third, run the PraisonAI process with the least filesystem privilege needed and keep its cache root on a volume that does not hold user configuration, project state or application data, since the delete primitive can only reach what the process can reach and this limits blast radius without preventing the traversal itself. Operators should also be aware that the destructive rmtree path requires a prior normal cache entry for the same owner/repo/template prefix, so clearing or isolating existing template caches removes the deletion precondition but does not stop the outside-cache .cache_meta.json write - only the 4.6.59 upgrade does that.
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, and the flaw lives entirely in its template subsystem rather than in any downloaded archive. praisonai/templates/resolver.py matches GitHub template URIs with GITHUB_PATTERN, whose broad regex groups capture the template path and ref and return them without segment validation; praisonai/templates/security.py is_source_allowed() accepts GitHub sources by default when allow_any_github is true; registry.get_template() resolves the URI, fetches the template, computes a checksum and calls cache.put(); cache._get_cache_path() then builds self.cache_dir / "github" / owner / repo / resolved.path / ref with no rejection of absolute segments or '.'/'..', no path resolution, and no os.path.commonpath check against the cache root; finally put() calls shutil.rmtree(cache_path) on an existing path, recreates it, copies content and writes .cache_meta.json. That yields CWE-22 path traversal (with the advisory also tagging CWE-73 external control of file name or path): the first load writes .cache_meta.json to an attacker-selected location outside the cache, and if a normal cache hierarchy for the same owner/repo/template already exists the same escaped path reaches shutil.rmtree and removes an attacker-selected outside directory before being replaced with cache metadata. The bug is distinct from the earlier template Zip Slip advisory - no malicious archive member is required, and the published reproducer disables network fetches entirely, so the primitive is purely cache-key construction; the advisory notes the same behavior also reproduces against a non-existent GitHub repository where the failed fetch still results in writes and deletes through the escaped path. Impact is bounded strictly by the filesystem permissions of the PraisonAI process, and the AV:N/PR:N/UI:R vector reflects a network-reachable, low-complexity, unauthenticated condition that only fires when the victim loads the crafted URI.
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:R/S:U/C:N/I:H/A:H
AV:N/UI:R because a victim must load an attacker-supplied github: template URI; PR:N as no target privileges are needed; C:N with I:H/A:H from outside-cache write and directory deletion.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
PraisonAI is a multi-agent teams system. From version 2.6.0 to before version 4.6.59, PraisonAI's template loader accepts GitHub template URIs with refs, for example github:owner/repo/template@v1.0.0. The resolver stores the user-controlled template path and ref verbatim, and the cache layer later joins those values into ~/.praison/cache/templates/github/<owner>/<repo>/<template>/<ref> without normalizing each segment or checking that the final path remains inside the template cache root. A crafted ref such as ../../../../../../outside-delete-target therefore escapes the cache directory. The first load can write .cache_meta.json outside the cache. If the normal cache hierarchy for the same owner/repo/template has already been created, the same path reaches shutil.rmtree(cache_path) and removes an attacker-selected outside directory before replacing it with cache metadata. This issue has been patched in version 4.6.59.
Technical POC Analysis
CWE-22 (path traversal; advisory also tags CWE-73).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-57113 is a high-severity path traversal vulnerability in PraisonAI versions 2.6.0 through 4.6.57 that enables an attacker to delete arbitrary directories on systems where users load malicious GitHub template URIs. This impacts the integrity and availability of critical data and services, potentially causing significant operational disruption and data loss, which warrants management attention despite the need for user interaction.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting user ability to load external GitHub template URIs, implementing application-level validation to block path traversal sequences in template refs, and enforcing least privilege on filesystem permissions to reduce deletion impact.
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-108889
GHSA-f44v-7qgw-9gh9
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB