<?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-10T13:31:42.338053+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-55533</id>
    <title>CVE-2026-55533 — PraisonAI: Authentication fail-open in Recipe server allows unauthenticated access when API key or JWT auth is configur…</title>
    <updated>2026-10-10T13:31:42.370702+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> MervinPraison PraisonAI</p>
<p>PraisonAI is a multi-agent teams system. Prior to praisonai 4.6.58, create_auth_middleware() allows requests when auth=api-key lacks PRAISONAI_API_KEY or JWT authentication lacks PRAISONAI_JWT_SECRET. An externally bound Recipe server can therefore accept unauthenticated POST /v1/recipes/run requests despite authentication being enabled. This issue is fixed in version 4.6.58.</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-55533"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-gfq8-hmph-9gjv</id>
    <title>GHSA-gfq8-hmph-9gjv — PraisonAI: Authentication fail-open in Recipe server allows unauthenticated access when API key or JWT auth is configur…</title>
    <updated>2026-10-10T13:31:42.370763+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 PraisonAI Recipe HTTP server silently allows unauthenticated requests when `auth` is configured as `api-key` or `jwt` but the corresponding secret is missing.</p>
<p>This creates an authentication fail-open condition. An operator can start the Recipe server with authentication enabled, including on a non-localhost interface, but the server still accepts unauthenticated requests if no API key or JWT secret is provided.</p>
<p>The issue is especially risky because the CLI safety check for non-localhost binding only verifies that `auth != "none"`. It does not verify that an actual API key or JWT secret exists.</p>
<p>### Details</p>
<p>The Recipe server documents the following authentication modes:</p>
<p>- `none`
- `api-key`
- `jwt`</p>
<p>Relevant source locations:</p>
<p>- `src/praisonai/praisonai/recipe/serve.py`
- `src/praisonai/praisonai/cli/features/recipe.py`</p>
<p>In `create_auth_middleware()`, the API key middleware resolves the expected key as:</p>
<p>```python
expected_key = api_key or os.environ.get("PRAISONAI_API_KEY")</p>
<p>if not expected_key:
    # No key configured, allow request
    return await call_next(request)
```</p>
<p>This means `auth: api-key` does not enforce authentication if `api_key` / `PRAISONAI_API_KEY` is missing.</p>
<p>The JWT middleware has the same fail-open behavior:</p>
<p>```python
secret = jwt_secret or os.environ.get("PRAISONAI_JWT_SECRET")
if not secret:
    return await call_next(request)
```</p>
<p>The auth middleware is still attached when `auth` is configured:</p>
<p>```python
auth_type = config.get(…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-gfq8-hmph-9gjv"/>
  </entry>
</feed>
