mediumCVSS 6.5Vulnerability

CVE-2026-55531

### Summary The PraisonAI MCP HTTP-stream server creates a new in-memory session on every initialize request and never removes it. The cleanup routine that would expire sessions (_cleanup_sessions) is defined but never called anywhere in the codebase, and the configured session TTL is never enforced. There is no cap on the number of sessions. Because initialize requires no authentication and the server keeps every session dictionary forever, an attacker who can reach the endpoint (directly when the server is bound to a routable address, or from a victim's browser via the separate Origin-validation bypass) can drive memory usage up without bound until the process is killed by the out-of-memory killer. The same unbounded-growth pattern also applies to the cancelled-requests set populated by notifications/cancelled. ### Details In transports/http_stream.py, each initialize creates and stores a session with no limit: ```python if body.get("method") == "initialize": new_session_id = str(uuid.uuid4()) self._sessions[new_session_id] = { "created_at": time.time(), "last_activity": time.time(), } ``` A cleanup method exists: ```python def _cleanup_sessions(self) -> None: now = time.time() expired = [sid for sid, data in self._sessions.items() if now - data["last_activity"] > self.session_ttl] for sid in expired: del self._sessions[sid] ``` but grep across the package shows it has no call sites: it is never invoked on a timer, on request handling, or from any background task. self.session_ttl (default 3600) is stored and otherwise unused. There is no maximum-session check anywhere on the write path. As a result self._sessions grows monotonically for the lifetime of the process. initialize is unauthenticated: in mcp_post the API-key check is skipped when no key is configured (the default), and initialize does not require a prior session. The Origin check is the only gate, and a request with no Origin header

Properties

ghsa_id
GHSA-wv94-5qcp-6m36
severity
medium
summary
PraisonAI MCP HTTP server has unauthenticated unbounded session accumulation (memory exhaustion; session TTL never enforced)
cvss_score
6.5
cve_id
CVE-2026-55531
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
is_ghsa_only
false
ghsa_published
2026-08-25T14:34:28Z
source_url
https://github.com/advisories/GHSA-wv94-5qcp-6m36
ghsa_updated
2026-08-25T14:34:29Z

Related Entities (5)

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]pip/PraisonAI

AFFECTS (1)

[Software]pip/PraisonAI

HAS_WEAKNESS (2)

[Weakness]Allocation of Resources Without Limits or Throttling
[Weakness]Uncontrolled Resource Consumption

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-55531 (CVSS 6.5) — Ninja Signal Threat Intelligence | Ninja Signal