Skip to main content

PraisonAI EUVDEUVD-2026-108897

| CVE-2026-57144 HIGH
Incorrect Privilege Assignment (CWE-266)
2026-10-23 GitHub_M GHSA-6jcq-6546-qrrw PYSEC-2026-3504
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit untrusted code to PraisonAI sandbox
  2. Exploit
    Landlock-absent host triggers silent subprocess fallback
  3. Execution
    Code executes without filesystem/network confinement
  4. Impact
    Read 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

PraisonAI 4.5.110, < 4.6.61

Affected Packages

pypi praisonai fix: 4.6.61

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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 14:02 EUVD
CVE Published
Oct 23, 2026 - 12:07 cve.org
HIGH 8.8

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
niche open-source multi-agent framework, limited production deployment footprint
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2026-61447 CRITICAL POC
10.0 Jul 11

Remote code execution in PraisonAI before 1.6.78 allows attackers to run arbitrary Python on the host by manipulating th

CVE-2026-57139 CRITICAL POC
9.8 Sep 15

PraisonAI's TypeScript MCP server (npm package `praisonai`, versions 1.5.0 through 1.7.1) exposes an HTTP JSON-RPC trans

CVE-2026-55536 CRITICAL POC
9.1 Aug 25

WebSocket origin-validation bypass in PraisonAI's Browser Server (praisonai/browser/server.py) before 4.6.58 lets an att

CVE-2026-55541 HIGH POC
8.8 Aug 25

PraisonAI's `praisonai serve` subsystem (agents and unified modes) accepts an `--api-key` CLI flag that is parsed but ne

CVE-2026-61439 HIGH POC
8.7 Jul 11

System prompt extraction and unauthorized tool invocation in PraisonAI before 4.6.78 arise because the prompt-injection

CVE-2026-55534 HIGH POC
8.6 Aug 25

Unauthenticated remote agent invocation in PraisonAI versions 4.6.34 through 4.6.57 allows any network-reachable caller

CVE-2026-55526 HIGH POC
8.5 Aug 25

SSRF protection bypass in PraisonAI's praisonaiagents library (all versions before 1.6.58) lets low-privileged users rou

CVE-2026-61429 HIGH POC
8.4 Jul 11

Server-side request forgery in PraisonAI's Crawl4AI/Chromium crawling backend (all versions before 1.6.78) lets low-priv

CVE-2026-55533 HIGH POC
8.2 Aug 25

Authentication fail-open in PraisonAI's Recipe HTTP server allows unauthenticated remote attackers to invoke recipe exec

CVE-2026-55528 HIGH POC
8.2 Aug 25

Authentication bypass in PraisonAI's AgentServer component exposes all routes - /publish, /events, /info, /health - to u

CVE-2026-55522 HIGH POC
7.8 Aug 05

Arbitrary Python code execution in PraisonAI's workflow include feature allows an attacker who controls a local recipe d

CVE-2026-55523 HIGH POC
7.7 Aug 05

Server-side request forgery in PraisonAI's web_crawl() function (versions 1.5.128-1.6.57) allows an attacker who can inf

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy