{"id":"CVE-2026-116575","title":"Mem0: Cross-tenant conversation leak via unescaped delimiter collision in session-scope key (_build_session_scope)","summary":"Mem0 provides persistent memory infrastructure for AI agents and applications. Prior to Python SDK 2.0.18 and TypeScript SDK 3.1.6, _build_session_scope() in mem0/memory/main.py and Memory.buildSessionScope() in the TypeScript SDK join c…","severity":"medium","cvss":6.3,"cvssVector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N","cvssSource":"cna","cwe":["CWE-200","CWE-863"],"vendor":"mem0ai","product":"mem0","affected":["mem0 < 2.0.18"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"total","timestamp":"2026-10-27T13:45:14.377647Z"},"published":"2026-10-26","updated":"2026-10-27","sourceUpdated":"2026-10-27T14:18:25.039Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-116575","references":[{"url":"https://github.com/mem0ai/mem0/security/advisories/GHSA-5324-3w58-qpp2","label":"https://github.com/mem0ai/mem0/security/advisories/GHSA-5324-3w58-qpp2"},{"url":"https://github.com/mem0ai/mem0/pull/6892","label":"https://github.com/mem0ai/mem0/pull/6892"},{"url":"https://github.com/mem0ai/mem0/commit/71f2ebefa3494da21550fb525216818776cde67f","label":"https://github.com/mem0ai/mem0/commit/71f2ebefa3494da21550fb525216818776cde67f"},{"url":"https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.6","label":"https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.6"},{"url":"https://github.com/mem0ai/mem0/releases/tag/v2.0.18","label":"https://github.com/mem0ai/mem0/releases/tag/v2.0.18"}],"tags":["cve.org"],"epss":0.00108,"epssPercentile":0.01187,"ingestedAt":"2026-10-26T20:39:42.618Z","slug":"CVE-2026-116575","body":"## Overview\n\nMem0 provides persistent memory infrastructure for AI agents and applications. Prior to Python SDK 2.0.18 and TypeScript SDK 3.1.6, _build_session_scope() in mem0/memory/main.py and Memory.buildSessionScope() in the TypeScript SDK join caller-controlled user_id, agent_id, and run_id values using unescaped & and = delimiters. A caller can embed another scope component in a controlled identifier so that distinct tenant tuples produce the same session_scope key. Memory.add(), AsyncMemory.add(), and the REST POST /memories flow use that key to read and save recent raw messages, allowing cross-tenant conversation disclosure and eviction or interleaving of another tenant's history. This issue is fixed in Python SDK 2.0.18 and TypeScript SDK 3.1.6.\n\n## Affected\n\n- `mem0 < 2.0.18`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":35,"depthScoreParts":{"impact":34.7,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}