← voltar
CVE-2026-39888

PraisonAIAgents has a sandbox escape via exception frame traversal in `execute_code` (subprocess mode)

CVSS 10 CRITICALEPSS 0.5%CWE-657CWE-693
Em resumo

A caixa de areia de código do PraisonAI pode ser escapada explorando frames de exceção para acessar funções Python ocultas. Um atacante consegue executar código sem restrições apesar dos bloqueios de segurança.

Detalhe técnico

A função execute_code() usa bloqueio incompleto de atributos (11 contra 30+ nomes) em modo sandbox subprocess, omitindo __traceback__, tb_frame, f_back e f_builtins. Um atacante pode encadear esses atributos de frame de exceção para acessar o dicionário __builtins__ real do wrapper e recuperar exec() sob um nome não bloqueado, contornando completamente as restrições da sandbox. Nenhuma autenticação necessária; vulnerabilidade exige apenas capacidade de fornecer entrada a execute_code().

Resumo gerado e traduzido por IA a partir da descrição oficial.
PraisonAI is a multi-agent teams system. Prior to 1.5.115, execute_code() in praisonaiagents.tools.python_tools defaults to sandbox_mode="sandbox", which runs user code in a subprocess wrapped with a restricted __builtins__ dict and an AST-based blocklist. The AST blocklist embedded inside the subprocess wrapper (blocked_attrs of python_tools.py) contains only 11 attribute names — a strict subset of the 30+ names blocked in the direct-execution path. The four attributes that form a frame-traversal chain out of the sandbox are all absent from the subprocess list (__traceback__, tb_frame, f_back, and f_builtins). Chaining these attributes through a caught exception exposes the real Python builtins dict of the subprocess wrapper frame, from which exec can be retrieved and called under a non-blocked variable name — bypassing every remaining security layer. This vulnerability is fixed in 1.5.115.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Quer saber se a sua infraestrutura está exposta a isto?

Falar com a TrueHacking →