CVE-2026-34936: PraisonAI: SSRF via api_base steals cloud IAM credentials
GHSA-x6m9-gxvr-7jpvHIGHPoC AVAILABLECISA: 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.
How severe is it?
What is the attack surface?
What should I do?
6 stepsPatch 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.
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-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?
Proof-of-concept exploit code is publicly available for CVE-2026-34936, increasing the risk of exploitation.
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.35%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0025Exfiltration via Cyber MeansAML.T0040AI Model Inference API AccessAML.T0049Exploit Public-Facing ApplicationAML.T0055Unsecured CredentialsAML.T0075Cloud Service DiscoveryCompliance Controls Affected
What are the technical details?
Original Advisory
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)
CWE-918 — Server-Side Request Forgery (SSRF): The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
- [Implementation, Operation] If there is a known list of applications, IP, hostname, and/or domains to which the product is allowed to communicate, then use allowlists to ensure that outgoing requests are restricted to these known entities. The allowlists could be in the application code or possibly enforced by firewalls or network segmentation [REF-1511].
- [Implementation, Operation] If the product is expected to be able to connect to arbitrary IP addresses or domains, consider using a denylist that includes private network addresses, internal domain names, etc. The denylist could be in the application code or possibly enforced by firewalls or network segmentation [REF-1511].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:NReferences
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