<?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-20T17:20:51.241968+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/pysec-2026-3502</id>
    <title>PYSEC-2026-3502 — PraisonAI recipe serve Typer command bypasses the non-localhost authentication guard</title>
    <updated>2026-10-20T17:20:51.243289+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: praisonai</p>
<p># PraisonAI `recipe serve` Typer command bypasses the non-localhost authentication guard</p>
<p>## Summary</p>
<p>PraisonAI's installed console entrypoint is Typer-first. In current releases,
the `recipe` command is registered in the Typer app and
`praisonai recipe serve` dispatches to the deprecated Typer command in
`src/praisonai/praisonai/cli/commands/recipe.py`.</p>
<p>That Typer command can start the Recipe HTTP server on a non-localhost
interface with no authentication:</p>
<p>```text
praisonai recipe serve --host 0.0.0.0 --admin
```</p>
<p>It prints a deprecation warning, then launches the server with:</p>
<p>```json
{
  "host": "0.0.0.0",
  "config": {
    "cors_origins": "*",
    "enable_admin": true
  }
}
```</p>
<p>Because `config.auth` is absent, `create_app()` does not attach the API-key or
JWT middleware. Unauthenticated requests can then reach the recipe API and, when
enabled, `/admin/reload`.</p>
<p>This is an incomplete hardening / sibling-callsite issue. The legacy feature
handler in `src/praisonai/praisonai/cli/features/recipe.py` rejects the same
non-localhost/no-auth combination, and current `create_auth_middleware()` now
fails closed if API-key/JWT auth is selected without a secret. The installed
Typer command bypasses both expectations by never requiring or setting `auth`.</p>
<p>## Affected product</p>
<p>- Repository: `MervinPraison/PraisonAI`
- Package: `praisonai`
- Component:
  - `src/praisonai/praisonai/__main__.py`
  - `src/praisonai/praisonai/cli/app.py`
  - `src/praisonai/praisonai/cli/commands/recipe.…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/pysec-2026-3502"/>
  </entry>
</feed>
