CVE-2026-34938 PraisonAI: Python Sandbox Escape via str Subclass startswith() Override in execute_code

Critical 10.0 Published Updated

Attackers can bypass the Python sandbox in PraisonAI to execute arbitrary OS commands on the host by exploiting a flaw in the execute_code function.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2026-34938?

CVE-2026-34938 is a critical code injection vulnerability in MervinPraison PraisonAI, published on 3 Apr 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

PraisonAI is a multi-agent teams system. Prior to version 1.5.90, execute_code() in praisonai-agents runs attacker-controlled Python inside a three-layer sandbox that can be fully bypassed by passing a str subclass with an overridden startswith() method to the _safe_getattr wrapper, achieving arbitrary OS command execution on the host. This issue has been patched in version 1.5.90.

Weakness: CWE-693

Which versions are affected by CVE-2026-34938?

3 open source packages ship an affected version, including praisonaiagents. It affects 1 product.

PackageAffectedFixed in
praisonaiagents PyPIAll versions1.5.90
praisonaiagents PyPIAll versions1.5.90
praisonaiagents PyPIAll versions1.5.90

Products include Praison Praisonaiagents.

How do I fix CVE-2026-34938?

Upgrade praisonaiagents to 1.5.90 or later.

Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.

Is CVE-2026-34938 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-34938 exists.

Sources

Also known as GHSA-6vh2-h83c-9294, PYSEC-2026-484.

Is CVE-2026-34938 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free