GHSA-j4f3-55x4-r6q2: npm PraisonAI MCPServer exposes unauthenticated HTTP tools/call
Summary
The published npm package praisonai exports a TypeScript MCPServer that can expose tools, resources, and prompts over an HTTP JSON-RPC transport with:
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:
src/praisonai-ts/src/mcp/server.ts
57: export interface MCPServerConfig {
63: tools?: MCPServerTool[];
65: resources?: MCPResource[];
67: prompts?: MCPPrompt[];
69: stdio?: boolean;
73: port?: number | null;
75: logging?: boolean;
handleRequest() dispatches sensitive MCP methods directly:
src/praisonai-ts/src/mcp/server.ts
203: async handleRequest(request: MCPRequest): Promise<MCPResponse> {
219: case 'tools/call':
220: result = await this.handleToolCall(params);
225: case 'resources/read':
226: result = await this.handleResourceRead(params);
231: case 'prompts/get':
232: result = await this.handlePromptGet(params);
The tool dispatcher invokes the registered handler:
src/praisonai-ts/src/mcp/server.ts
285: private async handleT
Details
Original advisory: https://github.com/advisories/GHSA-j4f3-55x4-r6q2
Referenced CVEs
| CVE | CSIRTS overview | External |
|---|---|---|
| CVE-2026-57139 | coverage & exploitation status | NVD · CVE.org |
More from GitHub Security Advisories
- mediumGHSA-xm43-3m56-w3wf: Ghost: Paid gift memberships obtainable at minimal cost via the donations feature2026-08-04
- mediumGHSA-chgm-3698-jm42: Ghost: Member existence leak via magic link sign-in response2026-08-04
- highGHSA-xpp7-93x6-v29m: XSS in Ghost's ActivityPub client2026-08-04
- mediumGHSA-7mpp-r37j-x5wh: Ghost: Session Fixation in Ghost Admin2026-08-04
- mediumGHSA-cjc9-q5gf-327p: Ghost: Theme Upload Path Traversal2026-08-04