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)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (2)
Explore deeper with Ninja Signal's threat intelligence graph