{"answers":{"affected":"3 open source packages ship an affected version, including praisonai and PraisonAI. It affects 1 product.","exploited":"It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-40159 exists.","fix":"Upgrade praisonai to 4.5.128 or later.","what":"CVE-2026-40159 is a medium-severity vulnerability in MervinPraison PraisonAI, published on 10 Apr 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2026-40159 and fix it if it is affected.\n\nWhat it is: CVE-2026-40159 is a medium-severity vulnerability in MervinPraison PraisonAI, published on 10 Apr 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.\nExploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-40159 exists.\n\nAffected packages and fixed versions:\n- praisonai (PyPI): affected all versions; fixed in 4.5.128\n- praisonai (PyPI): affected all versions; fixed in 4.5.128\n- PraisonAI (PyPI): affected all versions; fixed in 4.5.128\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-40159/ (Markdown: https://insights.sbomify.com/CVE-2026-40159/index.md)","id":"CVE-2026-40159","markdown":"https://insights.sbomify.com/CVE-2026-40159/index.md","name":"CVE-2026-40159","record":{"aliases":["GHSA-pj2r-f9mw-vrcq","PYSEC-2026-2918"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["data_read","security_bypass"],"network_reachable":"adjacent_or_local","non_default_config":false,"product_category":"Python AI agent library","requires_auth":"none","summary":"PraisonAI exposes sensitive environment variables to untrusted subprocesses, allowing attackers to steal API keys and credentials via malicious MCP commands.","user_interaction":"required","vuln_class":"information_disclosure"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"praisonai","vendor":"praison"}],"cvss":{"score":5.5,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","version":"3.1"},"cwes":[{"id":"CWE-214","name":"Invocation of Process Using Visible Sensitive Information"},{"id":"CWE-200","name":"Exposure of Sensitive Information to an Unauthorized Actor"}],"description":"PraisonAI is a multi-agent teams system. Prior to 4.5.128, PraisonAI’s MCP (Model Context Protocol) integration allows spawning background servers via stdio using user-supplied command strings (e.g., MCP(\"npx -y @smithery/cli ...\")). These commands are executed through Python’s subprocess module. By default, the implementation forwards the entire parent process environment to the spawned subprocess. As a result, any MCP command executed in this manner inherits all environment variables from the host process, including sensitive data such as API keys, authentication tokens, and database credentials. This behavior introduces a security risk when untrusted or third-party commands are used. In common scenarios where MCP tools are invoked via package runners such as npx -y, arbitrary code from external or potentially compromised packages may execute with access to these inherited environment variables. This creates a risk of unintended credential exposure and enables potential supply chain attacks through silent exfiltration of secrets. This vulnerability is fixed in 4.5.128.","ecosystems":["PyPI"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"weaponised"},"has_fix":true,"headline":"PraisonAI Exposes Sensitive Environment Variable via Untrusted MCP Subprocess Execution","id":"CVE-2026-40159","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":"information_disclosure","year":"2026"},"n_packages":3,"n_references":1,"next":{"headline":"PraisonAIAgents has SSRF via unvalidated URL in `web_crawl` httpx fallback","id":"CVE-2026-40160"},"packages":[{"ecosystem":"PyPI","fixed":["4.5.128"],"introduced":["0"],"last_affected":[],"package":"PraisonAI","purl":null,"source":"GHSA-pj2r-f9mw-vrcq"},{"ecosystem":"PyPI","fixed":["4.5.128"],"introduced":["0"],"last_affected":[],"package":"praisonai","purl":"pkg:pypi/praisonai","source":"GHSA-pj2r-f9mw-vrcq"},{"ecosystem":"PyPI","fixed":["4.5.128"],"introduced":["0"],"last_affected":[],"package":"praisonai","purl":"pkg:pypi/praisonai","source":"PYSEC-2026-2918"}],"prev":{"headline":"PraisonAI has Improper Control of Generation of Code ('Code Injection') and Protection Mechanism Failure in praisonai","id":"CVE-2026-40158"},"products":["PraisonAI"],"published":"2026-04-10","related":[{"cvss_score":10,"headline":"PraisonAIAgents has a sandbox escape via exception frame traversal in `execute_code` (subprocess mode)","id":"CVE-2026-39888","kev_date_added":null,"published":"2026-04-08"},{"cvss_score":9.8,"headline":"Incomplete fix for CVE-2026-34935: Command Injection in MervinPraison/PraisonAI","id":"CVE-2026-41497","kev_date_added":null,"published":"2026-05-08"},{"cvss_score":9.8,"headline":"PraisonAI: Critical RCE via `type: job` workflow YAML","id":"CVE-2026-40288","kev_date_added":null,"published":"2026-04-14"},{"cvss_score":9.8,"headline":"PraisonAI Affected by Remote Code Execution via YAML Deserialization in Agent Definition Loading","id":"CVE-2026-39890","kev_date_added":null,"published":"2026-04-08"},{"cvss_score":9.8,"headline":"PraisonAI: Second-Order SQL Injection in `get_all_user_threads`","id":"CVE-2026-34934","kev_date_added":null,"published":"2026-04-03"},{"cvss_score":9.8,"headline":"PraisonAI: OS Command Injection in MCPHandler.parse_mcp_command()","id":"CVE-2026-34935","kev_date_added":null,"published":"2026-04-03"},{"cvss_score":9.7,"headline":"Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in praisonai","id":"CVE-2026-40088","kev_date_added":null,"published":"2026-04-09"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CC BY 4.0","name":"PyPA Advisory Database","prefix":"PYSEC"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"poc","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-04-15","vendors":["MervinPraison"]},"summary":"PraisonAI exposes sensitive environment variables to untrusted subprocesses, allowing attackers to steal API keys and credentials via malicious MCP commands.","url":"https://insights.sbomify.com/CVE-2026-40159/"}