VU#754548: Cinnamon's kotaemon contains improper authorization checks in Kotaemon multi‑user chat handlers
Kotaemon through v0.12.0 lets any logged-in user read or alter others' chats and document excerpts via CVE-2026-86867.
CERT/CC VU#754548 describes CVE-2026-86867 in Cinnamon's Kotaemon RAG chatbot, affecting every version through v0.12.0. The select_conv, delete_conv, rename_conv, and persist_chat_suggestions handlers query conversations by ID without checking the owner, so any authenticated user who knows a UUID can read transcripts and verbatim document excerpts, delete or rename chats, or overwrite suggestions. The vendor could not be reached, and no official patch is available. Injected suggestions are described as a possible prompt-injection path if the model acts on them.
- Broken ownership checks affect four chat handlers through v0.12.0.
- RAG history can expose verbatim excerpts from private documents.
- Any authenticated user with a conversation UUID can act.
- No official patch exists; overwritten suggestions may seed prompt injection.
- Conversation deletion is permanent and has no recycle bin.
Vulnerabilities mentionedAll →
- CVE-2026-868676.5—Broken Access Control in Cinnamon Kotaemon Chat Lets Users Read and Delete Others' Chatspublished · Cinnamon Kotaemon
| CVE | Vulnerability | CVSS | EPSS | Flags | Affected | Exposure | Published |
|---|---|---|---|---|---|---|---|
| CVE-2026-86867 | Broken Access Control in Cinnamon Kotaemon Chat Lets Users Read and Delete Others' Chats Cinnamon's Kotaemon, an open-source RAG/chat interface, fails to enforce per-user ownership checks in four handler methods in libs/ktem/ktem/pages/chat/control.py, which load a Conversation record by its ID without comparing the requester's user_id to the conversation's owner (Conversation.user). Any authenticated user can trigger the flaw by supplying another user's conversation ID in a request, allowing them to read that user's chat transcripts, RAG retrieval history, AI-generated plots, and chat suggestions. An attacker can also permanently delete another user's conversation, rename it, or overwrite its chat suggestion list, with no indication that deleted data is recoverable. All versions up to and including v0.12.0 are affected wherever multi-user mode is enabled, especially deployments that grant accounts to users who should not see each other's work. There is no public proof of concept, no known exploitation, no CISA KEV entry, and no CVSS score assigned yet. |
Full article572 words · extracted from kb.cert.org · click to collapse
Overview
Cinnamon's Kotaemon (all versions up to v0.12.0) multi‑user chat interface does not verify conversation ownership when loading a conversation. Any authenticated user can read, delete, rename, or overwrite another user’s conversation data by supplying the correct ID. This results in high‑impact confidentiality, integrity, and availability violations.
Description
Cinnamon's Kotaemon is an open‑source, retrieval‑augmented generation (RAG) based tool that lets you build a chatbot capable of "chatting with your documents". As discussed in CVE-2026-86867, all versions up to v0.12.0 fail to verify conversation ownership when loading a conversation. In multi‑user mode, each conversation row includes a user field that identifies its owner. The four affected handlers, select_conv, delete_conv, rename_conv, and persist_chat_suggestions, query conversations using select(Conversation).where(Conversation.id == conversation_id)
No predicate is included to ensure Conversation.user == user_id. As a result, any authenticated user can operate on conversations they do not own.
Impacted operations include:
* select_conv – reads the full chat transcript, RAG retrieval history (verbatim excerpts from uploaded private documents), plot history, and suggestion data belonging to another user.
* delete_conv – permanently deletes a conversation.
* rename_conv – renames a conversation.
* persist_chat_suggestions – overwrites a chat suggestion list.
Although select_conv includes an ownership check for the selected (file‑picker) field, all sensitive payloads (chat history, retrieval history, plot history) are returned unconditionally. The system trusts user‑controlled identifiers for authorization. Attackers require only an authenticated account on the instance and a victim conversation UUID (Universally Unique Identifier). Affected users’ public conversations appear in the global conversation browser, exposing their UUIDs. If a conversation is later set to private, the UUID remains unchanged and still valid. Similar direct calls to delete_conv, rename_conv, and persist_chat_suggestions allow deletion, renaming, or content overwriting. No elevated privileges are required; any authenticated user account is sufficient.
Impact
Full chat transcripts and RAG retrieval history for any conversation are disclosed. For Kotaemon's primary deployment use case (enterprise document Q&A over proprietary knowledge bases such as legal briefs, financial reports, research papers, and internal strategy documents), the retrieval_history field contains verbatim excerpts from those private documents. A single IDOR (Insecure Direct Object Reference) read may expose more sensitive content than what the affected user intended to share with any other party.
Conversations can be renamed or have their suggestion state overwritten. While the impact of renaming is limited, the persist_chat_suggestions path allows an attacker to inject attacker-controlled prompt suggestions into the victim's conversation UI, a potential vector for prompt injection if the AI model acts on suggested prompts.
delete_conv permanently destroys any conversation with a single call. An attacker can systematically delete all conversations of a target user or across all users if they have access to the UUIDs. There is no recycle bin or soft-delete in the Kotaemon data model for conversations.
Because retrieval_history contains verbatim document chunks (not just file names), the attacker does not need separate file-read permissions to access the content of documents indexed into the victim's knowledge base. The chat conversation becomes a side-channel through which document content leaks.
Solution
Unfortunately, the vendor could not be reached to coordinate this vulnerability. While an official patch is not available at this time, please refer to the vendor's web site and GitHub repository (listed in the references below) for future updates.
https://github.com/Cinnamon/kotaemon
https://cinnamon.github.io/kotaemon/
Acknowledgements
Thank you to Louis Sanchez for reporting this vulnerability. This document was written by Bob Kemerer.
Vendor Information
754548
Filter by status:
Filter by content: Additional information available
Sort by: