# CVE-2026-39890: MervinPraison PraisonAI RCE via YAML deserialization in AgentService

Source: https://junglewise.ai/threats/cve-2026-39890-mervinpraison-praisonai-rce-via-yaml-deserialization-in  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-04-08. Updated: 2026-07-24  
License: CC BY 4.0 with a link back

CVE-2026-39890 · Severity: critical · CVSS 9.8 · Published 2026-04-08

PraisonAI, a system used to manage and coordinate multiple AI agents, is vulnerable to a critical security flaw. An attacker can upload a specially crafted configuration file that allows them to run unauthorized commands on the server. This could lead to a total takeover of the system, theft of sensitive data, or disruption of AI operations.

Technologies: [Praisonai](https://junglewise.ai/threats/technologies/praisonai), [praisonai (PyPI)](https://junglewise.ai/threats/technologies/pypi-praisonai). Vendors: [Praison](https://junglewise.ai/threats/vendors/praison), [PyPI](https://junglewise.ai/threats/vendors/pypi).

## Quick answers

**Is CVE-2026-39890 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-39890 being exploited in the wild.

**How severe is CVE-2026-39890?** Critical severity, with a CVSS score of 9.8, published 8 April 2026.

**Which products and versions are affected?** praisonai (PyPI) ECOSYSTEM:introduced=0,fixed=4.5.115.

**Is there a fix for CVE-2026-39890?** Yes. praisonai (PyPI): upgrade to 4.5.115 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-39890 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-39890?** Check whether you run Praisonai or praisonai (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- praisonai (PyPI): upgrade to 4.5.115 or later

  ```sh
  pip install "praisonai>=4.5.115"
  ```


## Technical details

A deserialization vulnerability (CWE-502) exists in PraisonAI's AgentService.loadAgentFromFile method due to the unsafe use of the js-yaml library. The application fails to specify a safe schema when parsing YAML files, allowing the execution of dangerous tags like !!js/function. An unauthenticated remote attacker can exploit this by uploading a malicious agent definition file via an API endpoint. Successful exploitation results in arbitrary JavaScript execution and full remote code execution (RCE) on the host server. The issue is resolved in version 4.5.115 by implementing safe YAML loading schemas.

## Affected products

- MervinPraison PraisonAI < 4.5.115

## Identifiers

- CVE-2026-39890
- GHSA-32vr-5gcf-3pw2
- PYSEC-2026-462

## Timeline

- 2026-04-07: advisory: GitHub Security Advisory published
- 2026-04-08: disclosed: CVE-2026-39890 published to NVD
- 2026-04-08: patched: Fixed in version 4.5.115

## References

- [https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-32vr-5gcf-3pw2](https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-32vr-5gcf-3pw2)

## Related threats

- [PraisonAI authentication bypass in A2U event streaming](https://junglewise.ai/threats/cve-2026-57146-praisonai-a2u-incomplete-authentication-fix-leaves-current-serve)
- [PraisonAI sandbox escape when Landlock unavailable](https://junglewise.ai/threats/cve-2026-57144-praisonai-sandlocksandbox-falls-back-to-unrestricted-subprocess)
- [PraisonAI recipe policy bypass via YAML-approved tools](https://junglewise.ai/threats/cve-2026-57142-praisonai-recipe-workflow-policy-can-be-bypassed-by-declaring-and)
- [PraisonAI shell command injection in compute-bridged file tools](https://junglewise.ai/threats/cve-2026-57117-praisonai-compute-bridged-file-tools-allow-shell-command)
- [PraisonAI AgentOS authentication bypass in FastAPI deployment](https://junglewise.ai/threats/cve-2026-57116-praisonai-agentos-remains-unauthenticated-after-incomplete-fix)
