Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit untrusted code to PraisonAI sandbox
-
ExploitLandlock-absent host triggers silent subprocess fallback
-
ExecutionCode executes without filesystem/network confinement
-
ImpactRead out-of-scope files and exfiltrate over network
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Privilege assignment review
|
| Exploitation Conditions | Exploitation requires three concrete conditions, all drawn from the advisory: (1) the host must have the optional 'sandlock' Python module importable while the kernel reports Landlock unavailable (e.g., an unsupported/missing Landlock ABI) - this is the exact branch that logs 'Sandlock not available, falling back to subprocess' and fails open; (2) the application must execute untrusted code via SandlockSandbox using SandboxConfig.native() (the code-execution path, not the read_file/write_file/list_files helpers, which still apply safe_sandbox_path checks); and (3) the attacker must be able to supply code to that sandbox. Limiting factors: where Landlock is present and enforced, or where sandlock is not installed at all, this specific fail-open does not occur; the attacker needs the ability to run code in the sandbox (PR:L), but no user interaction is required. The documented native policy (allowed filesystem paths, network=False) is silently not enforced during code execution. |
| Impact | The authoritative CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, base 8.8) correctly models this as a local sandbox escape with scope change: untrusted code that was supposed to be confined breaks the security authority (the Landlock-backed sandbox) and reaches host/other-tenant resources. Two signals are absent from the input: no EPSS probability is provided (so exploitation likelihood cannot be quantified) and there is no CISA KEV entry, so this is not confirmed as actively exploited. However, a detailed, demonstrated proof-of-concept is published inside the GHSA advisory with observed 'vulnerable: true' results on v4.6.58, so this is not a theoretical issue. The vuln.today decision label is 'this_week' (elevated, but not act_now/emergency). The key nuance that tempers raw severity: exploitation is gated by a specific environmental state - the optional 'sandlock' Python module must import successfully yet report Landlock unavailable (e.g., a kernel without the required Landlock ABI, which is common in many container/managed-runtime environments) - AND the application must actually rely on SandlockSandbox / SandboxConfig.native() to run untrusted code. Where those conditions hold this is a complete confinement bypass and a genuine priority for multi-tenant code-execution deployments; where Landlock is present and enforced, this specific fail-open path does not trigger. No conflict exists between the CVSS vector and the description - both describe local execution of attacker-supplied code crossing the sandbox boundary. |
| Exploit ScenarioDerived | A multi-agent or multi-tenant platform built on PraisonAI runs untrusted or LLM-generated code through SandboxConfig.native(writable_paths=[...], network=False), trusting the documented kernel-enforced filesystem allowlist and network denial. On a host where the sandlock module is installed but Landlock is unavailable, SandlockSandbox silently falls back to plain SubprocessSandbox, so a crafted payload reads files outside the allowed path (e.g., other tenants' data, /etc/passwd, SSH keys, cloud credentials) and opens outbound network connections despite network=False. A working proof-of-concept demonstrating both boundary crossings is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
PraisonAI's kernel-enforced SandlockSandbox silently degrades to ordinary subprocess execution when the optional sandlock module imports but reports that Linux Landlock is unavailable, so code that was supposed to be confined can read files outside the configured allowed paths and open network connections even when the native policy was created with network=False. The affected path is code executed through SandboxConfig.native() with SandlockSandbox in the pip package praisonai from 4.5.110 up to (but not including) 4.6.61; the read_file/write_file/list_files helpers still apply safe_sandbox_path checks and are not the exposed surface. CVSS 3.1 scores this 8.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) because the sandbox escape crosses a security scope with high confidentiality and integrity impact, while the attacker is positioned as a local, low-privileged party able to supply code to the sandbox rather than an unauthenticated network attacker. A public proof-of-concept script ships with the advisory (demonstrated against v4.6.58) that shows both boundary crossings; no confirmed active exploitation (CISA KEV) or public working exploit code is indicated, and the vendor released 4.6.61 as the fix.
RemediationAI
Vendor-released patch: upgrade praisonai to 4.6.61 or later, which removes the silent fallback so the native policy is no longer bypassed; the advisory at https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6jcq-6546-qrrw should be tracked for the packaged fix. After upgrading, confirm which backend actually executes the workload and that no degraded-mode warning is emitted, because the failure mode is silent by design in the vulnerable versions. Audit any deployment that treats SandlockSandbox as a tenant or multi-user isolation boundary: because the vulnerable code path reaches host and cross-tenant resources only when the sandlock module is importable but Landlock is unusable, hosts where Landlock is enforced or where sandlock is absent do not hit this branch, but relying on that environmental difference is not a substitute for patching. Restrict which principals can submit code to native-mode sandboxes until the upgrade is deployed, since the assessed vector requires the attacker to be able to get code into the sandbox (PR:L) and no user interaction.
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 implements a pluggable sandbox abstraction for executing untrusted payloads, with SandlockSandbox positioned as the hardened backend built on the upstream sandlock package, which in turn uses the Linux Landlock LSM to build a kernel-enforced filesystem allowlist plus network denial, alongside seccomp-style syscall restriction and POSIX resource limits. SandboxConfig.native() constructs a SecurityPolicy carrying allowed_paths, allow_network=False and allow_subprocess=True, and SandlockSandbox builds a Policy with fs_readable/fs_writable allowlists and net_allow_hosts=[] when network is disabled. The defect is a fail-open branch rather than a policy-construction flaw: when the sandlock module imports successfully but reports Landlock unavailable (for example a missing or unsupported Landlock ABI), both execute() and run_command() log a warning and delegate to SubprocessSandbox(self.config), which merely writes the payload to a temp file and runs python with a minimal environment and rlimits, installing no filesystem sandbox, network namespace, syscall filter, chroot, Landlock policy or path allowlist. The upstream sandlock project documents a fail-closed default for missing required protections unless the caller explicitly opts into degraded protection, and PraisonAI's own documentation and security demo describe the backend as blocking /etc/passwd, SSH keys, cloud credentials and unauthorized connections, so the silent substitution contradicts the documented contract. This maps to CWE-266 (Incorrect Privilege Assignment), with related weaknesses CWE-668 (Exposure of Resource to Wrong Sphere) and CWE-693 (Protection Mechanism Failure): the mechanism fails to fail closed, and untrusted code retains the privileges of the calling process instead of the reduced set the policy was intended to assign.
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:L/UI:N/S:C/C:H/I:H/A:H
Attacker-supplied code runs locally (AV:L) with low privilege to submit it (PR:L), escaping the sandbox authority to the host (S:C) with full read/write/execute impact; the Landlock-unavailable precondition is environmental, not attacker-controlled, so AC stays L.
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.110 to before version 4.6.61, praisonai.sandbox.SandlockSandbox is documented and implemented as the kernel-enforced sandbox backend for untrusted code. Its SandboxConfig.native() path lets callers configure allowed filesystem paths and network=False. On systems where the optional sandlock module imports but reports that Landlock is unavailable, SandlockSandbox.execute() and run_command() do not fail closed. They silently fall back to SubprocessSandbox(self.config). That fallback keeps the same high-level native policy object but does not enforce the native filesystem or network boundary during code execution. A sandboxed payload can read files outside the configured allowed path and open network connections despite network=False. This issue has been patched in version 4.6.61.
Technical POC Analysis
CWE-266 (Incorrect Privilege Assignment), also tagged CWE-693 and CWE-668.
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 4.5.110 to 4.6.60 have a high-severity sandbox escape (CVE-2026-57144) where the SandlockSandbox falls back to unconfined subprocess execution if Linux Landlock is unavailable, allowing code run in the sandbox to read sensitive files and make network connections despite being configured otherwise. This undermines the security isolation of untrusted code execution, putting confidential data and system integrity at risk for organizations using this package.
No vendor-released patch identified at time of analysis. As an interim mitigation, avoid using SandlockSandbox with native() for untrusted code, enforce strict input validation, and ensure Landlock is enabled and verified on all Linux hosts running the sandbox. Additionally, restrict network access from sandbox processes and monitor for unusual file or network activity.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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-108897
GHSA-6jcq-6546-qrrw
NVD
CVE.org
EPSS
Exploit-DB