<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 28 Sep 2026 11:59:17 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-55523 — PraisonAI has a`web_crawl` SSRF protection bypass via unchecked redirect targets</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-55523</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MervinPraison PraisonAI&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MervinPraison PraisonAI&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-55523</guid>
    </item>
    <item>
      <title>GHSA-8hjw-25cg-g52h — praisonaiagents has a `web_crawl` SSRF protection bypass via unchecked redirect targets</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-8hjw-25cg-g52h</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`praisonaiagents.tools.web_crawl_tools.web_crawl()` validates the initial URL and blocks direct loopback/private destinations by default, but the default httpx fallback still uses `httpx.Client(follow_redirects=True)` and does not revalidate redirect targets.&lt;/p&gt;
&lt;p&gt;An attacker-controlled public URL can pass the initial host check, redirect to loopback/private/cloud metadata infrastructure, and have the redirected response body returned by `web_crawl()`.&lt;/p&gt;
&lt;p&gt;This appears to be an incomplete fix / patch bypass for the published `web_crawl` SSRF class (`GHSA-qq9r-63f6-v542` / `CVE-2026-40160`, and `GHSA-8f4v-xfm9-3244`).&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Package:&lt;/p&gt;
&lt;p&gt;```text
praisonaiagents
```&lt;/p&gt;
&lt;p&gt;File:&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/web_crawl_tools.py
```&lt;/p&gt;
&lt;p&gt;Functions:&lt;/p&gt;
&lt;p&gt;```text
web_crawl()
_crawl_with_httpx()
```&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Validated affected:&lt;/p&gt;
&lt;p&gt;- `praisonaiagents 1.5.128` via repository tag `v4.5.128`;
- `praisonaiagents 1.6.40` via repository tag `v4.6.40`;
- `praisonaiagents 1.6.56` via repository tag `v4.6.56`;
- current `origin/main` commit `095653d78a01cc6c80ff5b2dd20a8e5619686ddc`.&lt;/p&gt;
&lt;p&gt;Suggested affected range for maintainer confirmation:&lt;/p&gt;
&lt;p&gt;```text
&amp;gt;= 1.5.128, &amp;lt;= 1.6.56
```&lt;/p&gt;
&lt;p&gt;No patched version is known to me at submission time.&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;Current `web_crawl()` validates only the initially supplied URL:&lt;/p&gt;
&lt;p&gt;- requires `http` or `https`;
- resolves the initial hostname with `socket.gethostbyname()`;
- rejects loopback/private/link-local/multicast/unspecif…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`praisonaiagents.tools.web_crawl_tools.web_crawl()` validates the initial URL and blocks direct loopback/private destinations by default, but the default httpx fallback still uses `httpx.Client(follow_redirects=True)` and does not revalidate redirect targets.&lt;/p&gt;
&lt;p&gt;An attacker-controlled public URL can pass the initial host check, redirect to loopback/private/cloud metadata infrastructure, and have the redirected response body returned by `web_crawl()`.&lt;/p&gt;
&lt;p&gt;This appears to be an incomplete fix / patch bypass for the published `web_crawl` SSRF class (`GHSA-qq9r-63f6-v542` / `CVE-2026-40160`, and `GHSA-8f4v-xfm9-3244`).&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Package:&lt;/p&gt;
&lt;p&gt;```text
praisonaiagents
```&lt;/p&gt;
&lt;p&gt;File:&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/web_crawl_tools.py
```&lt;/p&gt;
&lt;p&gt;Functions:&lt;/p&gt;
&lt;p&gt;```text
web_crawl()
_crawl_with_httpx()
```&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Validated affected:&lt;/p&gt;
&lt;p&gt;- `praisonaiagents 1.5.128` via repository tag `v4.5.128`;
- `praisonaiagents 1.6.40` via repository tag `v4.6.40`;
- `praisonaiagents 1.6.56` via repository tag `v4.6.56`;
- current `origin/main` commit `095653d78a01cc6c80ff5b2dd20a8e5619686ddc`.&lt;/p&gt;
&lt;p&gt;Suggested affected range for maintainer confirmation:&lt;/p&gt;
&lt;p&gt;```text
&amp;gt;= 1.5.128, &amp;lt;= 1.6.56
```&lt;/p&gt;
&lt;p&gt;No patched version is known to me at submission time.&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;Current `web_crawl()` validates only the initially supplied URL:&lt;/p&gt;
&lt;p&gt;- requires `http` or `https`;
- resolves the initial hostname with `socket.gethostbyname()`;
- rejects loopback/private/link-local/multicast/unspecif…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-8hjw-25cg-g52h</guid>
    </item>
  </channel>
</rss>
