CVE-2026-57135: Praisonai Npm PraisonAI SandboxExecutor Network-isolated Mode Vulnerability
HIGHCVE-2026-57135 is a HIGH (CVSS 7.6) npm praisonai sandboxexecutor network-isolated mode vulnerability (CWE-693: Protection Mechanism Failure) affecting Praisonai libraries in the npm ecosystem. The issue involves npm praisonai sandboxexecutor network-isolated mode does not block non-proxy-aware network clients. Remediation is available by upgrading affected packages to version 1.7.2.
CVE-2026-57135 at a Glance
Security Impact
CVSS: 7.6
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L).
How to Fix CVE-2026-57135
To remediate this vulnerability, upgrade all affected Praisonai dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install praisonai@1.7.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls praisonai
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-57135, inspect your project dependencies using npm:
npm ls praisonai
Analyze the terminal output to locate any version of Praisonai in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.7.2), your application is affected.
Note: The npm ls praisonai command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-693: Protection Mechanism Failure, where the product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product. In Praisonai, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-57135 Affected Praisonai Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
praisonai
|
npm |
≥ 1.2.3
< 1.7.2
|
1.7.2
|
References
Frequently Asked Questions
What is CVE-2026-57135?
Which Praisonai versions are affected?
What version fixes CVE-2026-57135?
Is praisonai affected?
What is the CVSS score of CVE-2026-57135?
What CWE is associated with CVE-2026-57135?
How can I check npm dependencies for CVE-2026-57135?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-gqmf-56h7-rrpf",
"modified" : "2026-07-20T21:27:06Z",
"published" : "2026-06-18T14:26:28Z",
"aliases" : [ "CVE-2026-57135" ],
"summary" : "npm PraisonAI SandboxExecutor network-isolated mode does not block non-proxy-aware network clients",
"details" : "## Summary\n\nThe published npm package `praisonai` exports a TypeScript `SandboxExecutor` with a `network-isolated` mode. The CLI lists that mode as:\n\n```text\nnetwork-isolated No network access (proxy blocked)\n```\n\nThe implementation does not create a network namespace, firewall rule, socket filter, or proxy-enforced execution boundary. It only injects proxy environment variables into the child process:\n\n```ts\nhttp_proxy: 'http://localhost:0',\nhttps_proxy: 'http://localhost:0',\nHTTP_PROXY: 'http://localhost:0',\nHTTPS_PROXY: 'http://localhost:0',\nno_proxy: '',\nNO_PROXY: ''\n```\n\nClients that do not explicitly honor those proxy variables continue to use the host network stack. A local-only PoV shows that, inside `mode: \"network-isolated\"`, a proxy-aware Node invocation is stopped, while a plain Node HTTP client reaches a loopback HTTP server from the same sandboxed command environment.\n\nThis is a network-isolation protection failure in an exported npm API and CLI mode. It is not a generic claim that every PraisonAI sandbox backend is affected.\n\n## Technical Details\n\n`src/praisonai-ts/src/cli/features/sandbox-executor.ts` declares the mode:\n\n```ts\nexport type SandboxMode = 'disabled' | 'basic' | 'strict' | 'network-isolated';\n```\n\n`SandboxExecutor.spawn()` starts the command through the host shell and passes only the environment returned by `buildEnv()`:\n\n```ts\nconst proc = spawn('sh', ['-c', command], {\n cwd: this.config.cwd,\n env,\n timeout: this.config.timeout,\n stdio: ['pipe', 'pipe', 'pipe']\n});\n```\n\nFor `network-isolated`, `buildEnv()` does not apply an OS-level network restriction. It only sets proxy variables:\n\n```ts\ncase 'network-isolated':\n // No network access (requires additional OS-level setup)\n return {\n ...baseEnv,\n http_proxy: 'http://localhost:0',\n https_proxy: 'http://localhost:0',\n HTTP_PROXY: 'http://localhost:0',\n HTTPS_PROXY: 'http://localhost:0',\n no_proxy: '',\n NO_PROXY: ''\n };\n```\n\nThe CLI mode listing presents this as no network access:\n\n```ts\n'network-isolated': 'No network access (proxy blocked)'\n```\n\nThat creates a false boundary. Proxy variables affect only clients that choose to read and honor them. Other clients can still open sockets directly from the child process.\n\n### Why This Is Not Intended Behavior\n\nThe vulnerable behavior is not \"commands can run.\" The issue is that a mode named `network-isolated` and displayed to users as \"No network access\" still allows direct socket access.\n\nThe source comment says `network-isolated` requires additional OS-level setup, which is consistent with the finding: proxy variables alone are not a network isolation mechanism. The exported npm API and CLI mode do not provide such setup or warn callers that this mode is only a best-effort proxy hint.\n\nIf the intended behavior is merely \"set proxy variables for cooperative clients,\" the mode name and CLI description should be changed so users do not rely on it as a security boundary.\n\n## PoV\n\nRun from a local reproduction checkout:\n\n```bash\nnode poc/pov_poc.js 1.7.1\n```\n\nThe PoV:\n\n1. Installs `npm:praisonai@1.7.1` into a temporary project.\n2. Starts a harmless HTTP server bound to `127.0.0.1` on a random local port.\n3. Creates `new SandboxExecutor({ mode: \"network-isolated\" })`.\n4. Confirms the child environment contains the proxy variables.\n5. Runs `node --use-env-proxy client.js` as a proxy-aware control. It fails and does not reach the server.\n6. Runs `node client.js` without proxy opt-in. It reaches the server and prints the marker.\n\nObserved output summary from `evidence/pov-npm-1.7.1.json`:\n\n```json\n{\n \"version\": \"1.7.1\",\n \"mode\": \"network-isolated\",\n \"control\": {\n \"localServerBoundToLoopback\": true,\n \"proxyVariablesSet\": true,\n \"proxyAwareClientStopped\": true,\n \"requestReachedLoopbackServer\": true\n },\n \"observed\": {\n \"proxyAwareRun\": {\n \"success\": false,\n \"stdout\": \"\",\n \"exitCode\": 2\n },\n \"netRun\": {\n \"success\": true,\n \"stdout\": \"BODY=poc\\n\",\n \"exitCode\": 0\n },\n \"loopbackHitCount\": 1\n },\n \"vulnerable\": true\n}\n```\n\nThe PoV is local-only. It does not contact any external host after npm package installation, and it does not use cloud metadata or destructive commands.\n\n## PoC\n\nThe PoV section above contains the local reproduction command, input, and decisive output.\n\n## Impact\n\nApplications often use sandbox network controls to prevent prompt-injected, user-supplied, or model-generated commands from exfiltrating secrets or reaching internal services. A caller who relies on `network-isolated` mode for that boundary can still get network egress by using any client that ignores proxy environment variables or by using direct socket APIs.\n\nDepending on the hosting environment, this can allow:\n\n- exfiltration from commands that can read local files, process output, or inherited environment variables;\n- access to localhost or internal network services reachable from the PraisonAI host;\n- requests to cloud metadata or service endpoints if the host network permits them; and\n- bypass of application policy that allows command execution only under a no-network assumption.\n\nThis report does not claim that npm PraisonAI exposes this as an unauthenticated network service by default. It is a library-level isolation bypass in an exported TypeScript API and CLI mode.\n\n### Severity\n\nSuggested severity: High.\n\nRationale:\n\n- `AV`: common use is a network-facing application or agent service that accepts user or prompt-controlled work and executes it through the sandbox.\n- `AC`: a single command using a non-proxy-aware network client is sufficient.\n- `PR`: conservative scoring assumes the attacker can submit prompts or work items to the application using PraisonAI.\n- `UN`: no additional operator interaction is required once the command is executed.\n- `S`: impact is scored against the PraisonAI-hosting process and its network privileges.\n- `C`: network egress can allow data exfiltration from the sandboxed command context.\n- `I/A`: reachable internal services can receive attacker-controlled requests, with impact depending on deployment.\n\nIf maintainers score only local CLI use, `AV:L` may be appropriate. If a deployment exposes this through unauthenticated agent endpoints, `PR:N` may be appropriate.\n\n## Suggested Fix\n\nDo not represent proxy environment variables as network isolation.\n\nRecommended:\n\n1. For a true `network-isolated` mode, run commands inside an execution boundary with OS-enforced network denial, such as a network namespace, firewall rule, sandbox profile, container, VM, or platform-specific socket filter.\n2. Add regression tests that start a loopback server and verify that direct socket clients, Node `http.get`, Python sockets, `curl`, and other common clients cannot connect under `network-isolated`.\n3. If only proxy hints are intended, rename the mode to something like `proxy-blocked`, document that it is not a security boundary, and keep \"network-isolated\" unavailable until OS-level enforcement exists.\n4. Consider default-deny egress with explicit allowlists for destinations that must remain reachable from sandboxed commands.\n\n## Affected Package/Versions\n\n- Repository: `MervinPraison/PraisonAI`\n- Ecosystem: `npm`\n- Package: `praisonai`\n- Component: TypeScript CLI feature `SandboxExecutor`\n- Latest npm package validated: `1.7.1`\n- Current `origin/main` validated: `1ad58ca02975ff1398efeda694ea2ab78f20cf3e`\n- `src/praisonai-ts/package.json` at `origin/main`: `praisonai` `1.7.1`\n\nSuggested affected range:\n\n```text\nnpm:praisonai >= 1.2.3, <= 1.7.1\n```\n\nSelected version sweep:\n\n- `1.0.0`: package main cannot be required in the selected test environment.\n- `1.0.19`, `1.1.0`, `1.2.0`, `1.2.1`, `1.2.2`: `SandboxExecutor` is not exported.\n- `1.2.3`: vulnerable.\n- `1.2.4`: vulnerable.\n- `1.3.0`: vulnerable.\n- `1.3.6`: vulnerable.\n- `1.4.0`: vulnerable.\n- `1.5.0`: vulnerable.\n- `1.5.4`: vulnerable.\n- `1.6.0`: vulnerable.\n- `1.7.0`: vulnerable.\n- `1.7.1`: vulnerable.\n\n## Advisory History\n\nVisible PraisonAI advisories and prior submissions were checked. The closest related findings are distinct:\n\n- `GHSA-r4f2-3m54-pp7q` covers PyPI `SubprocessSandbox` `shell=True` and blocklist bypass.\n- `GHSA-6jcq-6546-qrrw` covers Python Sandlock fallback to unrestricted subprocess execution when native Landlock is unavailable.\n- `GHSA-vmmj-pfw7-fjwp` covers npm `codeMode` host-process `new Function` sandbox escape.\n- `GHSA-vjv9-7m7j-h833` covers npm `SandboxExecutor` `allowedCommands` bypass through shell chaining.\n\nThis report is narrower and distinct: npm TypeScript `SandboxExecutor` `network-isolated` mode advertises no network access but enforces only proxy environment variables, so non-proxy-aware clients keep network access without needing shell chaining or a disallowed executable.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "praisonai"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "1.2.3"
}, {
"fixed" : "1.7.2"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 1.7.1"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-gqmf-56h7-rrpf"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/MervinPraison/PraisonAI"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-653", "CWE-693" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-06-18T14:26:28Z",
"nvd_published_at" : null
}
}