npm PraisonAI MCPServer exposes unauthenticated HTTP tools/call
Date: 2026-06
Affected: npm/praisonai
Attack vector: path-traversal
Category: vulnerability-disclosure
Severity: Critical
CWE: CWE-1188
CWE-306
CWE-862
CVSS: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

## Summary The published npm package `praisonai` exports a TypeScript `MCPServer` that can expose tools, resources, and prompts over an HTTP JSON-RPC transport with: ```ts await server.start({ port: 3000 }); ``` The HTTP transport has no authentication or authorization path. `MCPServerConfig` does not expose an auth/security setting, `startHttp()` ignores the `Authorization` header, and every POST request is parsed and forwarded directly to `handleRequest()`. That request handler dispatches sensitive MCP methods such as `tools/call`, `resources/read`, and `prompts/get`. The implementation also calls `this.httpServer.listen(port)` without a host argument. In Node.js this binds to the unspecified address; the local PoV observed `{ address: "::", family: "IPv6" }`, making the service reachable on all interfaces on systems where the port is exposed. This lets any network client that can reach the HTTP port list tools and invoke registered server-side tools without credentials. Supplying `Authorization: Bearer invalid` makes no difference. ## Technical Details `MCPServerConfig` exposes server metadata, tools/resources/prompts, stdio, port, and logging. It does not expose an auth token, authorization policy, `MCPSecurity` instance, authorization callback, or loopback-only option: ```text src/praisonai-ts/src/mcp/server.ts 57: export interface MCPServerConfig { 63: tools?: MCPServerTool[]; 65: resources?: MCPResource[]; 67: prompts?: MCPPrompt[]; 69:


Mitigations:

Architectural layers (MAESTRO):