PraisonAI API Server Missing Authentication (CVE-2026-44338)
by HORKimhab · 2026-07-05
- Severity
- High
- CVE
- CVE-2026-44338 / [GHSA-6rmh-7xcm-cpxj](https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-6rmh-7xcm-cpxj)
- Category
- web
- Affected product
- [PraisonAI](https://github.com/MervinPraison/PraisonAI) api_server.py (Flask-based agent API server)
- Affected versions
- See advisory (GHSA-6rmh-7xcm-cpxj)
- Disclosed
- 2026-07-05
- Patch status
- unpatched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-05 |
| Author / Researcher | HORKimhab |
| CVE / Advisory | CVE-2026-44338 / GHSA-6rmh-7xcm-cpxj |
| Category | web |
| Severity | High |
| CVSS Score | N/A (see advisory) |
| Status | PoC |
| Tags | praisonai, ai-agents, flask, no-auth, unauthenticated-access, api-server, python |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | PraisonAI api_server.py (Flask-based agent API server) |
| Versions Affected | See advisory (GHSA-6rmh-7xcm-cpxj) |
| Language / Platform | Python / Flask web application |
| Authentication Required | No — this is the vulnerability (AUTH_ENABLED = False by default) |
| Network Access Required | Yes — HTTP access to the exposed API server (default port 8080) |
Summary
PraisonAI’s api_server.py exposes HTTP endpoints (e.g. /agents, /chat) that trigger execution of configured AI agent workflows, but ships with authentication disabled by default and no token/Authorization-header requirement. Any network-reachable client can invoke agent workflows without credentials. The included PoC loads and runs the actual vulnerable api_server.py from the PraisonAI source tree (with the praisonai package itself stubbed out) so the no-auth behavior can be demonstrated end-to-end against real Flask + Flask-CORS request handling, rather than a synthetic mock.
Vulnerability Details
Root Cause
api_server.py runs with AUTH_ENABLED = False, meaning its Flask routes (agent listing, chat/workflow invocation) do not check for any token or Authorization header before executing the requested agent workflow. Any request that reaches the server is treated as authorized.
Attack Vector
- Attacker identifies a network-reachable PraisonAI
api_server.pydeployment (default port 8080). - Attacker sends a plain, unauthenticated
GET /agentsorPOST /chatrequest. - The server executes the requested agent/workflow and returns results with no authentication check at any point.
Impact
Unauthenticated attackers can invoke AI agent workflows, potentially triggering arbitrary configured agent actions (data access, external API calls, code/tool execution depending on the agent configuration) on a server that was intended to require authentication. Impact scales with whatever tools/permissions the configured PraisonAI agents have.
Environment / Lab Setup
The PoC stubs out the `praisonai` package (so PraisonAI itself doesn't need to be
installed) and then loads and executes the REAL vulnerable src/praisonai/api_server.py
from a checked-out PraisonAI repository, demonstrating the no-auth behavior against
genuine Flask/Flask-CORS request handling.
Run from within a PraisonAI repository checkout (so src/praisonai/api_server.py exists):
pip install flask flask-cors
python poc_auth_bypass.py
Proof of Concept
PoC Script
See
poc_auth_bypass.pyandagents.yamlin this folder.
| |
Running poc_auth_bypass.py starts the real, vulnerable api_server.py on 0.0.0.0:8080 with authentication disabled; the two curl commands above then succeed with no credentials, demonstrating unauthenticated access to agent execution endpoints.
Detection & Indicators of Compromise
- Requests to /agents or /chat (and similar API routes) with no Authorization header
or API token present.
- Elevated/unexpected traffic to a PraisonAI api_server.py instance from unfamiliar
source IPs.
Signs of compromise:
- Agent workflow executions in server logs with no corresponding authenticated session.
- Unexpected outbound calls, tool invocations, or resource usage triggered by agent runs not initiated by known users.
api_server.pyprocess reachable from the public internet or untrusted networks.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Apply the upstream fix per GHSA-6rmh-7xcm-cpxj; set AUTH_ENABLED = True and require a valid token/Authorization header on all agent-invocation endpoints. |
| Interim mitigation | Do not expose api_server.py directly to untrusted networks; place it behind a reverse proxy/API gateway that enforces authentication, or restrict access via firewall/VPN until patched. |
References
Notes
Mirrored from https://github.com/HORKimhab/CVE-2026-44338 on 2026-07-05.
| |