CVE-2026-34936: PraisonAI: SSRF via api_base steals cloud IAM credentials
GHSA-x6m9-gxvr-7jpv HIGH CISA: TRACK*Any praisonai deployment on cloud infrastructure with IMDSv1 enabled is at immediate risk of IAM credential theft—patch to 4.5.90 now. The default AUTH_ENABLED=False makes the passthrough API network-accessible without authentication, meaning any attacker who can reach the server can weaponize this with a 10-line PoC. Enforce IMDSv2 on all EC2 instances running AI workloads as a mandatory defense-in-depth measure regardless of patching status.
What is the risk?
High, trending critical in cloud environments. CVSS 7.7 with network-accessible attack vector, low complexity, and no user interaction required. The real-world blast radius exceeds the base score: IAM credential exfiltration on EC2 with IMDSv1 enables full account-level lateral movement. Auth disabled by default amplifies exposure to any network-reachable attacker. Exploitation complexity is trivially low—the published PoC is 10 lines of Python requiring no AI/ML expertise.
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| praisonai | pip | <= 4.5.89 | 4.5.90 |
Do you use praisonai? You're affected.
Severity & Risk
Attack Surface
What should I do?
6 steps-
Patch immediately: upgrade praisonai to >=4.5.90.
-
If patching is delayed: set AUTH_ENABLED=True and restrict network access to the praisonai API server via firewall/security group rules.
-
Enforce IMDSv2 on all EC2 instances running AI workloads: aws ec2 modify-instance-metadata-options --instance-id <id> --http-tokens required --http-put-response-hop-limit 1.
-
Audit IAM roles on praisonai hosts and enforce least-privilege—remove permissions not required for LLM inference.
-
Detection: monitor outbound HTTP from praisonai processes to 169.254.169.254, 192.168.0.0/16, 10.0.0.0/8, or 172.16.0.0/12.
-
Long-term: implement an api_base domain allowlist at the application or WAF layer.
CISA SSVC Assessment
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
Classification
Compliance Impact
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-34936?
Any praisonai deployment on cloud infrastructure with IMDSv1 enabled is at immediate risk of IAM credential theft—patch to 4.5.90 now. The default AUTH_ENABLED=False makes the passthrough API network-accessible without authentication, meaning any attacker who can reach the server can weaponize this with a 10-line PoC. Enforce IMDSv2 on all EC2 instances running AI workloads as a mandatory defense-in-depth measure regardless of patching status.
Is CVE-2026-34936 actively exploited?
No confirmed active exploitation of CVE-2026-34936 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-34936?
1. Patch immediately: upgrade praisonai to >=4.5.90. 2. If patching is delayed: set AUTH_ENABLED=True and restrict network access to the praisonai API server via firewall/security group rules. 3. Enforce IMDSv2 on all EC2 instances running AI workloads: aws ec2 modify-instance-metadata-options --instance-id <id> --http-tokens required --http-put-response-hop-limit 1. 4. Audit IAM roles on praisonai hosts and enforce least-privilege—remove permissions not required for LLM inference. 5. Detection: monitor outbound HTTP from praisonai processes to 169.254.169.254, 192.168.0.0/16, 10.0.0.0/8, or 172.16.0.0/12. 6. Long-term: implement an api_base domain allowlist at the application or WAF layer.
What systems are affected by CVE-2026-34936?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, LLM API proxies, cloud-hosted AI pipelines, model serving.
What is the CVSS score for CVE-2026-34936?
CVE-2026-34936 has a CVSS v3.1 base score of 7.7 (HIGH). The EPSS exploitation probability is 0.01%.
Technical Details
NVD Description
PraisonAI is a multi-agent teams system. Prior to version 4.5.90, passthrough() and apassthrough() in praisonai accept a caller-controlled api_base parameter that is concatenated with endpoint and passed directly to httpx.Client.request() when the litellm primary path raises AttributeError. No URL scheme validation, private IP filtering, or domain allowlist is applied, allowing requests to any host reachable from the server. This issue has been patched in version 4.5.90.
Exploitation Scenario
Attacker discovers a praisonai-powered AI assistant or API endpoint exposed on the network—auth disabled by default requires no credentials. They POST a crafted request to the passthrough endpoint with api_base='http://169.254.169.254/latest/meta-data/iam/security-credentials/' and custom_llm_provider='__nonexistent__'. The AttributeError fallback fires, praisonai makes an unauthenticated HTTP GET to the EC2 metadata service, and returns temporary IAM credentials in the API response. Within minutes, the attacker uses stolen credentials to enumerate S3 buckets containing training data and model artifacts, access other AWS services in scope for that IAM role, and potentially pivot to adjacent accounts via role chaining. Total attack time with the published PoC: under five minutes.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N References
Timeline
Related Vulnerabilities
GHSA-vc46-vw85-3wvm 9.8 PraisonAI: RCE via malicious workflow YAML execution
Same package: praisonai GHSA-9qhq-v63v-fv3j 9.8 PraisonAI: RCE via MCP command injection
Same package: praisonai CVE-2026-39890 9.8 PraisonAI: YAML deserialization enables unauthenticated RCE
Same package: praisonai GHSA-2763-cj5r-c79m 9.7 PraisonAI: RCE via shell injection in agent workflows
Same package: praisonai CVE-2026-44336 9.6 PraisonAI: MCP path traversal escalates to full RCE
Same package: praisonai