🛡️ CVE-2026-57118 — praisonaiagents
Description
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
# PraisonAI AgentTeam.launch() exposes unauthenticated remote agent invocation endpoints
Summary
PraisonAI's documented Python AgentTeam.launch() / Agents.launch() HTTP server starts externally reachable agent invocation endpoints without any authentication enforcement.
The current implementation registers GET /{path}/list, POST /{path}, and POST /{path}/{agent_id} routes. The POST routes directly call agent.chat(...). Requests with no Authorization header are accepted, and requests with an obviously wrong bearer token are also accepted. The default Python API bind host for Agents.launch() is 0.0.0.0, and official documentation shows host="0.0.0.0" for remote access.
This is a sibling/incomplete-fix variant of PraisonAI's prior unauthenticated API server and call server advisory family. Nearby server surfaces were hardened to require tokens, fail closed, or bind locally by default, but the AgentTeam.launch() FastAPI path still exposes unauthenticated agent execution on current upstream main and the latest release.
This report is scoped to the Python AgentTeam.launch() / Agents.launch() route-registration path. It does not require adjudicating whether the separate praisonai serve agents --api-key CLI path is correctly enforced.
Affected Components
- Package:
praisonaiagents - Current upstream main tested:
2f9677abb2ea68eab864ee8b6a828fd0141612e1 - Latest release tag tested:
v4.6.57 - Primary file:
src/praisonai-agents/praisonaiagents/agents/agents.py - Current line references:
AgentTeam.launch()begins at line 1923;
the group POST route is registered at line 2007; the group handler invokes
agent_instance.chat(...) at line 2042; the unauthenticated list route is
registered at line 2086; per-agent handlers invoke agent.chat(...) at line
2117.
- Primary class/API:
AgentTeam.launch()/ exported aliasAgents - Affected routes:
GET /{path}/list: lists deployed agents.POST /{path}: sequentially invokes all agents in the team.POST /{path}/{agent_id}: invokes a specific agent.
Current vulnerable sink:
```python
@app.post(path)
async def handle_query(request: Request, query_data: Optional[AgentQuery] = None):
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda ci=current_input: agent_instance.chat(ci)),
)
```
Per-agent sink:
```python
app.post(agent_path)(create_agent_handler(agent_instance))
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda q=query: agent.chat(q)),
)
```
List endpoint:
```python
@app.get(f"{path}/list")
async def list_agents():
return {"agents": [{"name": agent.display_name, "id": ...} for agent in self.agents]}
```
There is no middleware, dependency, token comparison, bearer-token parsing, API-key check, or startup fail-closed guard in this launch path.
Security Boundary
This is not a trust-model-only report. PraisonAI's own current security documentation says API servers were hardened so that anonymous requests return 401 and API servers bind to 127.0.0.1 by default after the prior unauthenticated API advisory family.
The codebase also contains hardened sibling implementations:
praisonai.deploy.apinow hasAUTH_ENABLED,PRAISONAI_API_TOKEN, generated tokens, and401 Unauthorizedchecks (src/praisonai/praisonai/deploy/api.pylines 44-62 and 69-97).praisonai.gateway.server.WebSocketGatewayvalidates external bind safety, requires a token for external binds, checks bearer/query/cookie auth, and validates WebSocket auth (src/praisonai/praisonai/gateway/server.pylines 328-424).praisonai callhardening is documented as requiringCALL_SERVER_TOKENor explicit opt-out.
AgentTeam.launch() remains outside those shared controls even though it exposes the same class of network-facing agent invocation surface.
Local-Only Reproduction
Run the local-only PoV script below with current source on PYTHONPATH:
```bash
PYTHONPATH="/path/to/PraisonAI/src/praisonai-agents:/path/to/PraisonAI/src/praisonai" \
python poc_agentteam_launch_unauth.py
```
Expected vulnerable result:
```text
[poc] HIT: unauthenticated clients invoked AgentTeam endpoints
```
Observed on current upstream main:
```json
{
"results": [
{
"body": {
"agents": [
{
"id": "pov_agent",
"name": "pov_agent"
}
]
},
"case": "no_auth_list",
"method": "GET",
"path": "/agents/list",
"status": 200
},
{
"case": "no_auth_group",
"method": "POST",
"path": "/agents",
"status": 200,
"body": {
"final_response": "POV_UNAUTH_AGENTTEAM_EXECUTED:marker",
"query": "marker",
"results": [
{
"agent": "pov_agent",
"response": "POV_UNAUTH_AG
How this vulnerability can be exploited
This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability high.
Weakness class
CVE-2026-57118 is classified as CWE-306: Missing Authentication for Critical Function. A sensitive function can be reached without authenticating at all.
Affected software
CVE-2026-57118 is recorded against 1 package.
- praisonaiagents (fixed in 1.6.59)
Timeline and source
Published on 18 June 2026 and last revised on 23 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.
References
Details
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| praisonaiagents | — | 1.6.59 |
References
Similar Threats
- Medium CVE-2026-47395
- Medium CVE-2026-47390
- Critical CVE-2026-47392
- High CVE-2026-44339
- High CVE-2026-44335
More CVE 2026 advisories
Browse all of CVE 2026 in the advisory index.
Exploit Protection
Are you running praisonaiagents?
CVE-2026-57118 carries CVSS 9.5 Critical rating. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.
Check My Site For CVE-2026-57118 →No credit card required · Results in minutes
ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.