<?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://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-07T17:00:22.687086+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" 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://vulnerability.circl.lu/vuln/ghsa-4pcv-mg8v-vrgf</id>
    <title>GHSA-4pcv-mg8v-vrgf — PraisonAI: Server-Side Request Forgery (SSRF) in SearxNG / search_web tools via attacker-controlled searxng_url paramet…</title>
    <updated>2026-10-07T17:00:22.703906+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: praisonaiagents</p>
<p>### Summary
A Server-Side Request Forgery (SSRF) vulnerability in the SearxNG / `search_web` search tools allows an attacker to make the server perform requests to arbitrary internal endpoints and read the responses back. The `searxng_url` argument is passed directly to `requests.get()` with no validation of scheme, host, or port. Because `searxng_url` is exposed to the LLM as a tool parameter and `search_web` / `searxng_search` are part of the default agent toolset, the vulnerability is reachable through prompt injection in any content an agent ingests (web pages, files, tool output). This enables reading internal services and APIs, internal host/port enumeration, and in cloud environments reachability of the instance metadata endpoint (169.254.169.254) with potential IAM/credential exposure.</p>
<p>### Details</p>
<p>The SearxNG search provider performs no validation on the `searxng_url` argument before issuing the HTTP request.</p>
<p>`src/praisonai-agents/praisonaiagents/tools/searxng_tools.py` (lines 16–47):
```python
def searxng_search(
    query: str,
    max_results: int = 5,
    searxng_url: Optional[str] = None
) -&gt; List[Dict]:
    ...
    url = searxng_url or "http://localhost:32768/search"   # line 42</p>
<p>params = {
        'q': query,
        'format': 'json',
        ...
    }</p>
<p>response = requests.get(url, params=params, timeout=10)   # line 45 — no validation
    response.raise_for_status()
```</p>
<p>The same unvalidated pattern exists in the unified `search_web` dispatcher:</p>
<p>`…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-4pcv-mg8v-vrgf"/>
  </entry>
</feed>
