<?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://cve.radiocsirt.org</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>Thu, 15 Oct 2026 06:13:10 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-368067</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-368067</link>
      <description>EUVD-2026-368067</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-368067</guid>
    </item>
    <item>
      <title>fkie_cve-2026-57115</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-57115</link>
      <description>&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, SpiderTools.scrape_page validates only the initial URL and lets requests.Session.get follow redirects automatically, so a public-looking URL can redirect to a loopback, private, link-local, or metadata address without revalidation. The redirected response body is returned through scrape_page and its extract_links, crawl, and extract_text callers, allowing disclosure from otherwise blocked services. This issue is fixed in praisonaiagents 1.6.59.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, SpiderTools.scrape_page validates only the initial URL and lets requests.Session.get follow redirects automatically, so a public-looking URL can redirect to a loopback, private, link-local, or metadata address without revalidation. The redirected response body is returned through scrape_page and its extract_links, crawl, and extract_text callers, allowing disclosure from otherwise blocked services. This issue is fixed in praisonaiagents 1.6.59.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-57115</guid>
    </item>
    <item>
      <title>GHSA-6h9p-93hq-q7h6 — PraisonAI: SpiderTools redirect-target SSRF protection bypass</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-6h9p-93hq-q7h6</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;# SpiderTools redirect-target SSRF protection bypass&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`SpiderTools.scrape_page()` validates the initial URL and rejects direct
loopback, private, link-local, metadata, and internal hostnames. It then calls
`requests.Session.get()` without disabling automatic redirects or validating
redirect `Location` targets.&lt;/p&gt;
&lt;p&gt;Requests follows redirects by default for GET requests. A safe-looking public
URL can therefore pass `_validate_url()`, redirect to a blocked target such as
`127.0.0.1` or `169.254.169.254`, and have the redirected response body parsed
and returned by `scrape_page()`.&lt;/p&gt;
&lt;p&gt;The same sink is used by `extract_links()`, `crawl()`, and `extract_text()`
through their calls to `scrape_page()`.&lt;/p&gt;
&lt;p&gt;## Affected component&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/spider_tools.py
```&lt;/p&gt;
&lt;p&gt;Tested affected:&lt;/p&gt;
&lt;p&gt;- `v3.9.24` / `d08d98ca`
- `v3.9.26` / `62472a23`
- `v4.6.56` / `d3c4a2af`
- `v4.6.57` / `e90d92231853161ad931f3498da57651a9f8b528`
- current main `2f9677abb2ea68eab864ee8b6a828fd0141612e1`&lt;/p&gt;
&lt;p&gt;No patched version is known at report time.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;Current main validates only the caller-supplied URL:&lt;/p&gt;
&lt;p&gt;```python
if not self._validate_url(url):
    return {&amp;#34;error&amp;#34;: f&amp;#34;Invalid or potentially dangerous URL: {url}&amp;#34;}
```&lt;/p&gt;
&lt;p&gt;The fetch then uses Requests defaults:&lt;/p&gt;
&lt;p&gt;```python
response = session.get(
    url,
    timeout=timeout,
    verify=verify_ssl
)
```&lt;/p&gt;
&lt;p&gt;Because `allow_redirects=False` is not set, Requests follows a 3xx redirect to a
new destination that has not been check…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;# SpiderTools redirect-target SSRF protection bypass&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`SpiderTools.scrape_page()` validates the initial URL and rejects direct
loopback, private, link-local, metadata, and internal hostnames. It then calls
`requests.Session.get()` without disabling automatic redirects or validating
redirect `Location` targets.&lt;/p&gt;
&lt;p&gt;Requests follows redirects by default for GET requests. A safe-looking public
URL can therefore pass `_validate_url()`, redirect to a blocked target such as
`127.0.0.1` or `169.254.169.254`, and have the redirected response body parsed
and returned by `scrape_page()`.&lt;/p&gt;
&lt;p&gt;The same sink is used by `extract_links()`, `crawl()`, and `extract_text()`
through their calls to `scrape_page()`.&lt;/p&gt;
&lt;p&gt;## Affected component&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/spider_tools.py
```&lt;/p&gt;
&lt;p&gt;Tested affected:&lt;/p&gt;
&lt;p&gt;- `v3.9.24` / `d08d98ca`
- `v3.9.26` / `62472a23`
- `v4.6.56` / `d3c4a2af`
- `v4.6.57` / `e90d92231853161ad931f3498da57651a9f8b528`
- current main `2f9677abb2ea68eab864ee8b6a828fd0141612e1`&lt;/p&gt;
&lt;p&gt;No patched version is known at report time.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;Current main validates only the caller-supplied URL:&lt;/p&gt;
&lt;p&gt;```python
if not self._validate_url(url):
    return {&amp;#34;error&amp;#34;: f&amp;#34;Invalid or potentially dangerous URL: {url}&amp;#34;}
```&lt;/p&gt;
&lt;p&gt;The fetch then uses Requests defaults:&lt;/p&gt;
&lt;p&gt;```python
response = session.get(
    url,
    timeout=timeout,
    verify=verify_ssl
)
```&lt;/p&gt;
&lt;p&gt;Because `allow_redirects=False` is not set, Requests follows a 3xx redirect to a
new destination that has not been check…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-6h9p-93hq-q7h6</guid>
    </item>
    <item>
      <title>PYSEC-2026-3531 — PraisonAI: SpiderTools redirect-target SSRF protection bypass</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-3531</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;# SpiderTools redirect-target SSRF protection bypass&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`SpiderTools.scrape_page()` validates the initial URL and rejects direct
loopback, private, link-local, metadata, and internal hostnames. It then calls
`requests.Session.get()` without disabling automatic redirects or validating
redirect `Location` targets.&lt;/p&gt;
&lt;p&gt;Requests follows redirects by default for GET requests. A safe-looking public
URL can therefore pass `_validate_url()`, redirect to a blocked target such as
`127.0.0.1` or `169.254.169.254`, and have the redirected response body parsed
and returned by `scrape_page()`.&lt;/p&gt;
&lt;p&gt;The same sink is used by `extract_links()`, `crawl()`, and `extract_text()`
through their calls to `scrape_page()`.&lt;/p&gt;
&lt;p&gt;## Affected component&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/spider_tools.py
```&lt;/p&gt;
&lt;p&gt;Tested affected:&lt;/p&gt;
&lt;p&gt;- `v3.9.24` / `d08d98ca`
- `v3.9.26` / `62472a23`
- `v4.6.56` / `d3c4a2af`
- `v4.6.57` / `e90d92231853161ad931f3498da57651a9f8b528`
- current main `2f9677abb2ea68eab864ee8b6a828fd0141612e1`&lt;/p&gt;
&lt;p&gt;No patched version is known at report time.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;Current main validates only the caller-supplied URL:&lt;/p&gt;
&lt;p&gt;```python
if not self._validate_url(url):
    return {&amp;#34;error&amp;#34;: f&amp;#34;Invalid or potentially dangerous URL: {url}&amp;#34;}
```&lt;/p&gt;
&lt;p&gt;The fetch then uses Requests defaults:&lt;/p&gt;
&lt;p&gt;```python
response = session.get(
    url,
    timeout=timeout,
    verify=verify_ssl
)
```&lt;/p&gt;
&lt;p&gt;Because `allow_redirects=False` is not set, Requests follows a 3xx redirect to a
new destination that has not been check…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: praisonaiagents&lt;/p&gt;
&lt;p&gt;# SpiderTools redirect-target SSRF protection bypass&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`SpiderTools.scrape_page()` validates the initial URL and rejects direct
loopback, private, link-local, metadata, and internal hostnames. It then calls
`requests.Session.get()` without disabling automatic redirects or validating
redirect `Location` targets.&lt;/p&gt;
&lt;p&gt;Requests follows redirects by default for GET requests. A safe-looking public
URL can therefore pass `_validate_url()`, redirect to a blocked target such as
`127.0.0.1` or `169.254.169.254`, and have the redirected response body parsed
and returned by `scrape_page()`.&lt;/p&gt;
&lt;p&gt;The same sink is used by `extract_links()`, `crawl()`, and `extract_text()`
through their calls to `scrape_page()`.&lt;/p&gt;
&lt;p&gt;## Affected component&lt;/p&gt;
&lt;p&gt;```text
src/praisonai-agents/praisonaiagents/tools/spider_tools.py
```&lt;/p&gt;
&lt;p&gt;Tested affected:&lt;/p&gt;
&lt;p&gt;- `v3.9.24` / `d08d98ca`
- `v3.9.26` / `62472a23`
- `v4.6.56` / `d3c4a2af`
- `v4.6.57` / `e90d92231853161ad931f3498da57651a9f8b528`
- current main `2f9677abb2ea68eab864ee8b6a828fd0141612e1`&lt;/p&gt;
&lt;p&gt;No patched version is known at report time.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;Current main validates only the caller-supplied URL:&lt;/p&gt;
&lt;p&gt;```python
if not self._validate_url(url):
    return {&amp;#34;error&amp;#34;: f&amp;#34;Invalid or potentially dangerous URL: {url}&amp;#34;}
```&lt;/p&gt;
&lt;p&gt;The fetch then uses Requests defaults:&lt;/p&gt;
&lt;p&gt;```python
response = session.get(
    url,
    timeout=timeout,
    verify=verify_ssl
)
```&lt;/p&gt;
&lt;p&gt;Because `allow_redirects=False` is not set, Requests follows a 3xx redirect to a
new destination that has not been check…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-3531</guid>
    </item>
  </channel>
</rss>
