CVE-2026-119800: Ryot: Cross-tenant collection read via `collectionContents`
Ryot is a self-hosted personal tracking application. Prior to 10.5.6, the collectionContents GraphQL query implemented by collectioncontents() in crates/services/collection/src/contentoperations.rs accepts a caller-controlled CollectionContentsInput.collectionid and returns a collection without checking whether the authenticated user owns it, collaborates on it, or may view it. The caller's user id is used only to annotate the response, allowing any authenticated user who obtains another collection's id to read the owner's identity, collection name and description, reviews, and complete item list across the tenant boundary. This issue is fixed in version 10.5.6.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Ryotto a version that resolves this vulnerability.Fixed in 10.5.6
Event History
Frequently Asked Questions
Who can exploit this issue?
Any authenticated Ryot user can exploit it if they obtain the ID of another user's collection. The vulnerable query does not require the caller to own, collaborate on, or otherwise have viewing permission for that collection.
What information can be exposed?
An unauthorized caller can read the collection owner's identity, the collection name and description, its reviews, and the complete item list.
Are default or unauthenticated deployments affected?
The issue requires authentication, so unauthenticated callers are not described as able to exploit it. Any deployment running a version before 10.5.6 may be affected because the vulnerable query accepts a caller-supplied collection ID without an authorization check.
What should be done if an immediate upgrade is not possible?
The provided information identifies version 10.5.6 as the fix but does not document a workaround. Until upgraded, limit access to authenticated users who must use the application and treat collection IDs as potentially exposed identifiers.