High severity · published Aug 5, 2026
CVE-2026-55523
PraisonAI has a`web_crawl` SSRF protection bypass via unchecked redirect targets
7.7
CVSS
0.5%
EPSS
No
On KEV
Description
PraisonAI is a multi-agent teams system. In versions 1.5.128 through 1.6.57, the praisonaiagents.tools.web_crawl_tools.web_crawl() function is vulnerable to server-side request forgery. While it validates the initially supplied URL and blocks direct loopback and private destinations, its default httpx fallback uses httpx.Client(follow_redirects=True) and does not revalidate intermediate or final redirect targets. An attacker who can influence a URL passed to web_crawl(), directly or through an agent or tool workflow, can supply an attacker-controlled public URL that passes the initial host check and then redirects to loopback, private-network, or cloud metadata endpoints reachable from the host, with the redirected response body returned in the web_crawl() result. This constitutes an incomplete fix and patch bypass for the previously disclosed web_crawl SSRF class (GHSA-qq9r-63f6-v542 / CVE-2026-40160 and GHSA-8f4v-xfm9-3244), since the guard validates only the requested URL and not the destination actually fetched after redirection. This issue has been fixed in version 1.6.58.
Exploitation
Is it being used?
Exploit prediction (EPSS)0.5% · higher than 40% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
PR
PraisonAI · MervinPraison
>= 1.5.128, < 1.6.58 · source: vendor
Affected product
PR
PraisonAI
MervinPraison
More from PraisonAI
10.0
CVE-2026-48168
PraisonAI: GitHub Actions Claude workflow command injection via unquoted PR branch name
10.0
CVE-2026-61447
PraisonAI before 1.6.78 Remote Code Execution via CodeAgent
10.0
CVE-2026-40114
PraisonAI has Server-Side Request Forgery via Unvalidated webhook_url in Jobs API
10.0
CVE-2026-39305
Arbitrary File Write / Path Traversal in Action Orchestrator
10.0
CVE-2026-34955
PraisonAI: Sandbox Escape via shell=True and Bypassable Blocklist in SubprocessSandbox