<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-16T20:28:18.512760+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/cve-2026-47390</id>
    <title>CVE-2026-47390 — PraisonAI spider_tools SSRF protection bypass via alternate loopback host encodings</title>
    <updated>2026-10-16T20:28:18.571348+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> MervinPraison PraisonAI, MervinPraison praisonaiagents</p>
<p>PraisonAI is a multi-agent teams system. Prior to version 4.6.40 of PraisonAI, corresponding to version 1.6.40 of praisonaiagents, `spider_tools` URL validation can be bypassed using alternate loopback host encodings. The tool contains a URL validation function intended to block local or unsafe targets before fetching attacker-controlled URLs. However, the validation only blocks a small set of exact host strings such as `localhost` and `127.0.0.1`. It does not normalize hostnames, resolve DNS, parse numeric IPv4 variants, or validate the final resolved IP address before making the request. As a result, certain URLs may bypass the protection and still reach loopback services. After the weak validation passes, `scrape_page()` calls `requests.Session.get()` on the attacker-controlled URL. This allows an attacker who can influence URLs passed to `scrape_page`, `crawl`, or `extract_text` to induce SSRF requests against loopback-only services. This is a server-side request forgery protection bypass. PraisonAI version 4.6.40 and praisonaiagents version 1.6.40 contain a patch.</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-47390"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-2902</id>
    <title>PYSEC-2026-2902 — PraisonAI spider_tools SSRF protection bypass via alternate loopback host encodings</title>
    <updated>2026-10-16T20:28:18.571453+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: praisonai</p>
<p>### Summary</p>
<p>PraisonAI's `spider_tools` URL validation can be bypassed using alternate loopback host encodings.</p>
<p>The affected component is:</p>
<p>```text
praisonaiagents/tools/spider_tools.py
````</p>
<p>The tool contains a URL validation function intended to block local or unsafe targets before fetching attacker-controlled URLs. However, the validation only blocks a small set of exact host strings such as `localhost` and `127.0.0.1`.</p>
<p>It does not normalize hostnames, resolve DNS, parse numeric IPv4 variants, or validate the final resolved IP address before making the request.</p>
<p>As a result, URLs such as the following bypass the protection and still reach loopback services:</p>
<p>```text
http://localhost.:8765/
http://127.1:8765/
http://0177.0.0.1:8765/
http://0x7f000001:8765/
http://2130706433:8765/
```</p>
<p>After the weak validation passes, `scrape_page()` calls `requests.Session.get()` on the attacker-controlled URL. This allows an attacker who can influence URLs passed to `scrape_page`, `crawl`, or `extract_text` to induce SSRF requests against loopback-only services.</p>
<p>This is a server-side request forgery protection bypass.</p>
<p>### Details</p>
<p>The affected code is in:</p>
<p>```text
praisonaiagents/tools/spider_tools.py
```</p>
<p>The vulnerable flow is:</p>
<p>```text
attacker-controlled URL
  -&gt; spider_tools._validate_url(...)
  -&gt; weak exact-host blocklist check
  -&gt; validation passes for alternate loopback encodings
  -&gt; scrape_page(...)
  -&gt; requests.Session.get(attacker_url)
  -&gt; loopback service is reached…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-2902"/>
  </entry>
</feed>
