PraisonAI's plugin manager imports and executes any .py file it finds in a project's or user's .praisonai/plugins/ directory, with no code signing, hash verification, or sandboxing to confirm the code is trusted before running it. For CISOs, the concern isn't internet-facing exposure — this is a local, low-complexity vector (CVSS 8.4, AV:L/PR:N/UI:N) — it's that PraisonAI is an agent framework often wired into automated pipelines, CI jobs, or shared dev environments, where a path-traversal write, a poisoned dependency, or a compromised teammate repo can drop a plugin file that executes with the full privileges of whatever process initializes the agent. There is no EPSS score yet, it isn't in CISA KEV, and no public exploit or Nuclei template exists, so this reads as unweaponized rather than under active attack — but the package's history of 138 other CVEs and a package risk score of 0/100 point to weak baseline security hygiene in this dependency. Upgrade praisonai/praisonaiagents to 1.6.78 or later immediately, and until then treat any writable .praisonai/plugins/ path (project or $HOME) as an untrusted code-execution surface — lock down write permissions and audit existing plugin directories for unexpected .py files.
What is the risk?
High severity (CVSS 8.4) despite a local-only attack vector: PR:N and UI:N mean any actor capable of writing a file to the plugin directory achieves full confidentiality/integrity/availability compromise with no further interaction, and low attack complexity flattens the bar to exploitation. Exploitability today is unconfirmed — no EPSS percentile, no CISA KEV listing, no public PoC or Nuclei template — but the underlying primitive (unsandboxed importlib exec_module on developer-writable paths) is a well-understood RCE pattern, so realistic risk should be treated as elevated even absent in-the-wild evidence. The package's track record of 138 other CVEs and a package risk score of 0/100 further suggest a project with weak baseline security hygiene, raising the odds of chained or repeat exploitation.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| PraisonAI | pip | — | No patch |
| PraisonAI | pip | — | No patch |
| PraisonAI Agents | pip | <= 1.6.77 | 1.6.78 |
How severe is it?
What is the attack surface?
What should I do?
1 stepUpgrade praisonaiagents/praisonai to 1.6.78 or later, where the fix is tracked under GHSA-m6wp-h223-4c8g. Until patched, restrict write access to both project-level and user-home .praisonai/plugins/ directories to trusted principals only, and treat any third-party PraisonAI plugin as untrusted code requiring manual review before installation. For detection, monitor for unexpected .py file creation under .praisonai/plugins/ paths and audit process-execution logs for python child processes spawned shortly after PraisonAI agent initialization. Longer term, push the vendor toward signed or hash-pinned plugins loaded in a restricted subprocess/sandbox rather than in-process via exec_module.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-61446?
PraisonAI's plugin manager imports and executes any .py file it finds in a project's or user's .praisonai/plugins/ directory, with no code signing, hash verification, or sandboxing to confirm the code is trusted before running it. For CISOs, the concern isn't internet-facing exposure — this is a local, low-complexity vector (CVSS 8.4, AV:L/PR:N/UI:N) — it's that PraisonAI is an agent framework often wired into automated pipelines, CI jobs, or shared dev environments, where a path-traversal write, a poisoned dependency, or a compromised teammate repo can drop a plugin file that executes with the full privileges of whatever process initializes the agent. There is no EPSS score yet, it isn't in CISA KEV, and no public exploit or Nuclei template exists, so this reads as unweaponized rather than under active attack — but the package's history of 138 other CVEs and a package risk score of 0/100 point to weak baseline security hygiene in this dependency. Upgrade praisonai/praisonaiagents to 1.6.78 or later immediately, and until then treat any writable .praisonai/plugins/ path (project or $HOME) as an untrusted code-execution surface — lock down write permissions and audit existing plugin directories for unexpected .py files.
Is CVE-2026-61446 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-61446, increasing the risk of exploitation.
How to fix CVE-2026-61446?
Upgrade praisonaiagents/praisonai to 1.6.78 or later, where the fix is tracked under GHSA-m6wp-h223-4c8g. Until patched, restrict write access to both project-level and user-home .praisonai/plugins/ directories to trusted principals only, and treat any third-party PraisonAI plugin as untrusted code requiring manual review before installation. For detection, monitor for unexpected .py file creation under .praisonai/plugins/ paths and audit process-execution logs for python child processes spawned shortly after PraisonAI agent initialization. Longer term, push the vendor toward signed or hash-pinned plugins loaded in a restricted subprocess/sandbox rather than in-process via exec_module.
What systems are affected by CVE-2026-61446?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, plugin/tool integration pipelines.
What is the CVSS score for CVE-2026-61446?
CVE-2026-61446 has a CVSS v3.1 base score of 8.4 (HIGH). The EPSS exploitation probability is 0.34%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.005AI Agent ToolAML.T0011.001Malicious PackageAML.T0050Command and Scripting InterpreterAML.T0081Modify AI Agent ConfigurationCompliance Controls Affected
What are the technical details?
Original Advisory
PraisonAI (praisonaiagents) before 1.6.78 contains a remote code execution vulnerability in the plugin manager, which loads and executes arbitrary Python (.py) files from project-level and user-home .praisonai/plugins/ directories using importlib spec_from_file_location() and exec_module() without code signing, integrity verification, or sandboxing. An attacker who can write a malicious .py file to a plugin directory (for example via path traversal, a supply chain attack, or a compromised dependency) achieves arbitrary code execution when the plugin system initializes.
Exploitation Scenario
An attacker compromises a dependency listed in a project's requirements, or exploits a path-traversal bug elsewhere in the application, to write a file such as .praisonai/plugins/update_helper.py into the target project or the invoking user's home directory. No user interaction or elevated privileges are needed — the next time the PraisonAI agent initializes, its plugin manager auto-discovers the file via importlib.util.spec_from_file_location() and calls exec_module(), running the attacker's code with the full privileges of the agent process, e.g. harvesting API keys/credentials the agent holds, pivoting to connected tools, or establishing host persistence.
Weaknesses (CWE)
CWE-427Uncontrolled Search Path ElementPrimaryCWE-94Improper Control of Generation of Code ('Code Injection')PrimaryCWE-94Improper Control of Generation of Code ('Code Injection')PrimaryCWE-94Improper Control of Generation of Code ('Code Injection')CWE-427 — Uncontrolled Search Path Element: The product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors.
- [Architecture and Design, Implementation] Hard-code the search path to a set of known-safe values (such as system directories), or only allow them to be specified by the administrator in a configuration file. Do not allow these settings to be modified by an external party. Be careful to avoid related weaknesses such as CWE-426 and CWE-428.
- [Implementation] When invoking other programs, specify those programs using fully-qualified pathnames. While this is an effective approach, code that uses fully-qualified pathnames might not be portable to other systems that do not use the same pathnames. The portability can be improved by locating the full-qualified paths in a centralized, easily-modifiable location within the source code, and having the code refer to these paths.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HReferences
- github.com/MervinPraison/PraisonAI/security/advisories/GHSA-m6wp-h223-4c8gvendor-advisory
- vulncheck.com/advisories/praisonai-before-remote-code-execution-via-plugin-auto-discoverythird-party-advisory
- github.com/advisories/GHSA-m6wp-h223-4c8g
- nvd.nist.gov/vuln/detail/CVE-2026-61446
- nvd.nist.gov/vuln/detail/CVE-2026-62165
Timeline
Related Vulnerabilities
CVE-2026-4816810.0PraisonAI: shell injection in Claude Action enables RCE
Same package: praisonaiCVE-2026-6144710.0PraisonAI: RCE via unsandboxed LLM code execution
Same package: praisonaiCVE-2026-614459.9PraisonAI: AICoder root RCE via unsanitized tool calls
Same package: praisonaiGHSA-vmmj-pfw7-fjwp9.9praisonai: sandbox escape gives RCE via codeMode tool
Same package: praisonaiCVE-2026-473929.9praisonaiagents: RCE via Python sandbox bypass
Same package: praisonai