Executive brief
PraisonAI's SandboxExecutor is a Node.js library component that claims to sandbox and isolate command execution, including preventing network access in "network-isolated" mode. However, the implementation only sets proxy environment variables and does not enforce true OS-level network isolation. Attackers or malicious prompts can bypass this restriction by using network clients that ignore proxy settings (such as raw socket APIs), allowing exfiltration of secrets, access to internal services, or cloud metadata endpoints.
Technical details
The vulnerability is a failed network isolation mechanism in SandboxExecutor.spawn(). The "network-isolated" mode only injects proxy environment variables (http_proxy, https_proxy, etc. set to http://localhost:0) into child processes but does not create OS-level network namespaces, firewall rules, socket filters, or proxy enforcement. Proxy-aware clients (those that check and honor proxy variables) are blocked, but any client that ignores these variables—such as plain Node.js HTTP clients or direct socket APIs—can still reach the host network. A proof-of-concept demonstrates that while node --use-env-proxy fails to reach a test server, plain node client.js succeeds, proving network egress is possible. The attack vector is local; an attacker must already be able to execute code through SandboxExecutor. The fix is available in version 1.7.2 and later.
Affected products
- npm praisonai >= 1.2.3, <= 1.7.1
Timeline
- 2026-06-18: disclosed
- 2026-06-18: patched: Fix available in version 1.7.2 and later