CVE-2026-61437: PraisonAI: unsafe dynamic import enables RCE

HIGH PoC AVAILABLE CISA: ATTEND
Published July 10, 2026
CISO Take

PraisonAI's workflow engine imports a sibling tools.py file via unsandboxed importlib exec_module whenever a workflow step references a string output_pydantic class, and it does this even when the PRAISONAI_ALLOW_*_TOOLS safety flags are set to block it. A CVSS 7.8 rating (AV:L/PR:N/UI:R, full confidentiality/integrity/availability impact) means anyone who gets a victim to load a crafted workflow file plus its matching tools.py — via a shared template, a compromised repo, or an internal collaboration channel — achieves arbitrary Python code execution with the privileges of the workflow runner. There is no EPSS score, no CISA KEV listing, and no public exploit or Nuclei template yet, so this is not an actively exploited, mass-scan threat today; the risk is concentrated wherever teams run PraisonAI workflows sourced from outside their direct control. Patch to praisonaiagents 1.6.78 or later immediately, and until then treat any workflow YAML/tools.py pair from a non-trusted source as untrusted code — do not load or execute it via WorkflowManager or load_yaml. Security teams should also stop relying on PRAISONAI_ALLOW_*_TOOLS as a control, since this vulnerability bypasses it entirely, and should audit recently imported third-party workflow templates for suspicious tools.py files.

Sources: NVD GitHub Advisory vulncheck.com ATLAS

What is the risk?

High severity (CVSS 7.8) but currently low real-world exploitation likelihood: no EPSS score, not in CISA KEV, no public exploit code or Nuclei template found. Attack complexity is low and no privileges are required, but exploitation requires user interaction (loading/running a specific malicious workflow file with a paired tools.py), making this a targeted supply-chain/social-engineering vector rather than a remotely scannable flaw. Once triggered, impact is complete — full compromise of confidentiality, integrity, and availability on the host running the agent runtime, since the loaded code executes with the workflow runner's privileges and safety env vars are bypassed entirely.

How does the attack unfold?

Distribution
Attacker crafts a workflow file with a string output_pydantic reference and a malicious sibling tools.py, then distributes it via a shared template, repo, or community channel.
AML.T0104
User Execution
Victim loads and runs the workflow via WorkflowManager or load_yaml, triggering AgentFlow._resolve_pydantic_class.
AML.T0011
Unsandboxed Code Execution
PraisonAI imports and executes tools.py via importlib exec_module without sandboxing, ignoring PRAISONAI_ALLOW_*_TOOLS restrictions.
AML.T0050
Impact
Attacker's code runs with the workflow runner's privileges, achieving full confidentiality, integrity, and availability compromise on the host.
AML.T0112.000

What systems are affected?

Package Ecosystem Vulnerable Range Patched
PraisonAI pip No patch
1 dependents 69% patched ~12d to patch Full package profile →
PraisonAI Agents pip No patch
20 dependents 67% patched ~6d to patch Full package profile →

How severe is it?

CVSS 3.1
7.8 / 10
EPSS
0.2%
chance of exploitation in 30 days
Higher than 7% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Local
AC Low
PR None
UI Required
S Unchanged
C High
I High
A High

What should I do?

1 step
  1. 1) Upgrade praisonaiagents to version 1.6.78 or later immediately. 2) Until patched, do not load or execute PraisonAI workflow files (and their sibling tools.py) from any source you don't fully control or haven't code-reviewed — this includes shared templates, community repos, and internal wikis. 3) Do not rely on PRAISONAI_ALLOW_*_TOOLS environment variables as a security boundary for this issue, since the vulnerable path ignores them. 4) Run PraisonAI workflow execution in a sandboxed, least-privilege environment (container with no access to sensitive credentials/network) to limit blast radius if exploitation occurs. 5) Detection: monitor for unexpected child processes or outbound network connections spawned by the PraisonAI runtime process, and audit for recently added or modified tools.py files alongside workflow YAML/JSON definitions in your repos.

What does CISA's SSVC say?

Decision Attend
Exploitation poc
Automatable No
Technical Impact total

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:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
ISO 42001
Annex A.6.2 - AI system security
NIST AI RMF
GOVERN-6.1 - Policies for third-party AI supply chain risks
OWASP LLM Top 10
LLM03:2025 - Supply Chain Vulnerabilities

Frequently Asked Questions

What is CVE-2026-61437?

PraisonAI's workflow engine imports a sibling tools.py file via unsandboxed importlib exec_module whenever a workflow step references a string output_pydantic class, and it does this even when the PRAISONAI_ALLOW_*_TOOLS safety flags are set to block it. A CVSS 7.8 rating (AV:L/PR:N/UI:R, full confidentiality/integrity/availability impact) means anyone who gets a victim to load a crafted workflow file plus its matching tools.py — via a shared template, a compromised repo, or an internal collaboration channel — achieves arbitrary Python code execution with the privileges of the workflow runner. There is no EPSS score, no CISA KEV listing, and no public exploit or Nuclei template yet, so this is not an actively exploited, mass-scan threat today; the risk is concentrated wherever teams run PraisonAI workflows sourced from outside their direct control. Patch to praisonaiagents 1.6.78 or later immediately, and until then treat any workflow YAML/tools.py pair from a non-trusted source as untrusted code — do not load or execute it via WorkflowManager or load_yaml. Security teams should also stop relying on PRAISONAI_ALLOW_*_TOOLS as a control, since this vulnerability bypasses it entirely, and should audit recently imported third-party workflow templates for suspicious tools.py files.

Is CVE-2026-61437 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2026-61437, increasing the risk of exploitation.

How to fix CVE-2026-61437?

1) Upgrade praisonaiagents to version 1.6.78 or later immediately. 2) Until patched, do not load or execute PraisonAI workflow files (and their sibling tools.py) from any source you don't fully control or haven't code-reviewed — this includes shared templates, community repos, and internal wikis. 3) Do not rely on PRAISONAI_ALLOW_*_TOOLS environment variables as a security boundary for this issue, since the vulnerable path ignores them. 4) Run PraisonAI workflow execution in a sandboxed, least-privilege environment (container with no access to sensitive credentials/network) to limit blast radius if exploitation occurs. 5) Detection: monitor for unexpected child processes or outbound network connections spawned by the PraisonAI runtime process, and audit for recently added or modified tools.py files alongside workflow YAML/JSON definitions in your repos.

What systems are affected by CVE-2026-61437?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, multi-agent workflow orchestration, AI agent tool invocation pipelines.

What is the CVSS score for CVE-2026-61437?

CVE-2026-61437 has a CVSS v3.1 base score of 7.8 (HIGH). The EPSS exploitation probability is 0.17%.

What is the AI security impact?

Affected AI Architectures

agent frameworksmulti-agent workflow orchestrationAI agent tool invocation pipelines

MITRE ATLAS Techniques

AML.T0010.005 AI Agent Tool
AML.T0011 User Execution
AML.T0050 Command and Scripting Interpreter
AML.T0104 Publish Poisoned AI Agent Tool

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: Annex A.6.2
NIST AI RMF: GOVERN-6.1
OWASP LLM Top 10: LLM03:2025

What are the technical details?

Original Advisory

PraisonAI (pip package praisonaiagents) before 1.6.78 contains an unsafe dynamic module loading vulnerability in AgentFlow._resolve_pydantic_class (src/praisonai-agents/praisonaiagents/workflows/workflows.py). When a workflow step uses a string output_pydantic reference, the framework locates and imports a sibling tools.py from the workflow file's directory via importlib exec_module without sandboxing, ignoring the PRAISONAI_ALLOW_*_TOOLS environment variables. An attacker who controls a workflow file and its sibling tools.py can execute arbitrary Python code with the workflow runner's privileges when the workflow is executed via WorkflowManager or after load_yaml.

Exploitation Scenario

An attacker publishes a seemingly useful PraisonAI workflow template (e.g., on GitHub, a shared internal wiki, or a Slack/Discord community) containing a workflow step with a string output_pydantic reference, paired with a malicious sibling tools.py in the same directory. A developer or security engineer at the victim organization downloads the workflow to automate a task and runs it via WorkflowManager or load_yaml. PraisonAI's AgentFlow._resolve_pydantic_class locates and imports the attacker's tools.py through importlib exec_module without any sandboxing, executing the attacker's arbitrary Python code with the privileges of whoever ran the workflow — potentially exposing API keys, cloud credentials, or other secrets accessible to that agent runtime, or serving as a foothold for lateral movement.

Weaknesses (CWE)

CWE-693 — Protection Mechanism Failure: The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Timeline

Published
July 10, 2026
Last Modified
July 14, 2026
First Seen
July 10, 2026

Related Vulnerabilities