<?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-17T12:27:54.795003+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/euvd-2026-291201</id>
    <title>EUVD-2026-291201</title>
    <updated>2026-10-17T12:27:54.865791+00:00</updated>
    <content>EUVD-2026-291201</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-291201"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-40150</id>
    <title>fkie_cve-2026-40150</title>
    <updated>2026-10-17T12:27:54.865831+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>PraisonAIAgents is a multi-agent teams system. Prior to 1.5.128, the web_crawl() function in praisonaiagents/tools/web_crawl_tools.py accepts arbitrary URLs from AI agents with zero validation. No scheme allowlisting, hostname/IP blocklisting, or private network checks are applied before fetching. This allows an attacker (or prompt injection in crawled content) to force the agent to fetch cloud metadata endpoints, internal services, or local files via file:// URLs. This vulnerability is fixed in 1.5.128.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-40150"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-8f4v-xfm9-3244</id>
    <title>GHSA-8f4v-xfm9-3244 — PraisonAIAgents has SSRF and Local File Read via Unvalidated URLs in web_crawl Tool</title>
    <updated>2026-10-17T12:27:54.865876+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: praisonaiagents</p>
<p>## Summary</p>
<p>The `web_crawl()` function in `praisonaiagents/tools/web_crawl_tools.py` accepts arbitrary URLs from AI agents with zero validation. No scheme allowlisting, hostname/IP blocklisting, or private network checks are applied before fetching. This allows an attacker (or prompt injection in crawled content) to force the agent to fetch cloud metadata endpoints, internal services, or local files via `file://` URLs.</p>
<p>## Details</p>
<p>The `web_crawl()` function at `web_crawl_tools.py:182` accepts a URL string or list of URLs and passes them directly to HTTP clients without any SSRF protections:</p>
<p>```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&gt; Union[Dict[str, Any], List[Dict[str, Any]]]:
    # Normalize to list
    single_url = isinstance(urls, str)
    # ...
    url_list = [urls] if single_url else urls
    
    # No URL validation whatsoever — urls flow directly to providers
    
    if selected == "tavily":
        results = _crawl_with_tavily(url_list)
    elif selected == "crawl4ai":
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```</p>
<p>The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:</p>
<p>```python
# web_crawl_tools.py:140-150
try:
    import httpx
    with httpx.Client(follow_redirects=True, timeout=30.0) as client:
        response = client.get(url)  # Line 143: fetches ANY URL, follows r…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-8f4v-xfm9-3244"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-2945</id>
    <title>PYSEC-2026-2945 — PraisonAIAgents has SSRF and Local File Read via Unvalidated URLs in web_crawl Tool</title>
    <updated>2026-10-17T12:27:54.865948+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: praisonaiagents</p>
<p>## Summary</p>
<p>The `web_crawl()` function in `praisonaiagents/tools/web_crawl_tools.py` accepts arbitrary URLs from AI agents with zero validation. No scheme allowlisting, hostname/IP blocklisting, or private network checks are applied before fetching. This allows an attacker (or prompt injection in crawled content) to force the agent to fetch cloud metadata endpoints, internal services, or local files via `file://` URLs.</p>
<p>## Details</p>
<p>The `web_crawl()` function at `web_crawl_tools.py:182` accepts a URL string or list of URLs and passes them directly to HTTP clients without any SSRF protections:</p>
<p>```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&gt; Union[Dict[str, Any], List[Dict[str, Any]]]:
    # Normalize to list
    single_url = isinstance(urls, str)
    # ...
    url_list = [urls] if single_url else urls
    
    # No URL validation whatsoever — urls flow directly to providers
    
    if selected == "tavily":
        results = _crawl_with_tavily(url_list)
    elif selected == "crawl4ai":
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```</p>
<p>The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:</p>
<p>```python
# web_crawl_tools.py:140-150
try:
    import httpx
    with httpx.Client(follow_redirects=True, timeout=30.0) as client:
        response = client.get(url)  # Line 143: fetches ANY URL, follows r…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-2945"/>
  </entry>
</feed>
