<?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>Sat, 17 Oct 2026 13:55:42 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-291201</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-291201</link>
      <description>EUVD-2026-291201</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-291201</guid>
    </item>
    <item>
      <title>fkie_cve-2026-40150</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-40150</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-40150</guid>
    </item>
    <item>
      <title>GHSA-8f4v-xfm9-3244 — PraisonAIAgents has SSRF and Local File Read via Unvalidated URLs in web_crawl Tool</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-8f4v-xfm9-3244</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;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.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&amp;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 == &amp;#34;tavily&amp;#34;:
        results = _crawl_with_tavily(url_list)
    elif selected == &amp;#34;crawl4ai&amp;#34;:
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```&lt;/p&gt;
&lt;p&gt;The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:&lt;/p&gt;
&lt;p&gt;```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…&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;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.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&amp;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 == &amp;#34;tavily&amp;#34;:
        results = _crawl_with_tavily(url_list)
    elif selected == &amp;#34;crawl4ai&amp;#34;:
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```&lt;/p&gt;
&lt;p&gt;The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:&lt;/p&gt;
&lt;p&gt;```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…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-8f4v-xfm9-3244</guid>
    </item>
    <item>
      <title>PYSEC-2026-2945 — PraisonAIAgents has SSRF and Local File Read via Unvalidated URLs in web_crawl Tool</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-2945</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;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.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&amp;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 == &amp;#34;tavily&amp;#34;:
        results = _crawl_with_tavily(url_list)
    elif selected == &amp;#34;crawl4ai&amp;#34;:
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```&lt;/p&gt;
&lt;p&gt;The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:&lt;/p&gt;
&lt;p&gt;```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…&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;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.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;```python
# web_crawl_tools.py:182-234
def web_crawl(
    urls: Union[str, List[str]],
    provider: Optional[str] = None,
) -&amp;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 == &amp;#34;tavily&amp;#34;:
        results = _crawl_with_tavily(url_list)
    elif selected == &amp;#34;crawl4ai&amp;#34;:
        results = _crawl_with_crawl4ai(url_list)
    else:
        results = _crawl_with_httpx(url_list)  # Always-available fallback
```&lt;/p&gt;
&lt;p&gt;The `_crawl_with_httpx()` fallback at line 133 makes the actual requests:&lt;/p&gt;
&lt;p&gt;```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…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-2945</guid>
    </item>
  </channel>
</rss>
