{"id":"CVE-2026-119800","kind":"vulnerability","aliases":["CVE-2026-119800"],"related":[],"title":"Ryot: any logged-in user can read other users' private collections","description":"Ryot is a self-hosted personal tracking application. Prior to 10.5.6, the collectionContents GraphQL query implemented by collection_contents() in crates/services/collection/src/content_operations.rs accepts a caller-controlled CollectionContentsInput.collection_id 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.","summary":"Ryot, a self-hosted personal tracking app, lets any authenticated user request another user's collection by its id and get back the owner's identity, collection name, description, reviews and full item list. An attacker with an account and a collection id can read data that belongs to someone else on the same instance.","severity":"medium","cvss":4.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["graphql","package","ryot","self-hosted"],"not_affected_if":["single-user","version-10.5.6-or-later"],"how_to_check":"- Look up the Ryot version the instance runs; it is affected below `10.5.6`.\n- Check whether the instance allows more than one account (multi-user tenants), since the flaw only matters when other users' collections exist.","fix":"- Ryot: upgrade to `10.5.6` or later.","status":"open","published_at":"2026-11-06T22:17:50+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","triaged_at":"2026-11-06T22:44:55+00:00","updated_at":"2026-11-06T22:44:55+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-06T22:44:55Z","model":"claude-haiku-5-5","output":{"fix":"- Ryot: upgrade to `10.5.6` or later.","reach":"network","title":"Ryot: any logged-in user can read other users' private collections","impact":"medium","summary":"Ryot, a self-hosted personal tracking app, lets any authenticated user request another user's collection by its id and get back the owner's identity, collection name, description, reviews and full item list. An attacker with an account and a collection id can read data that belongs to someone else on the same instance.","audience":"businesses","category":"package","nicknames":[],"who_cares":["ryot","self-hosted","graphql"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"other users' collections and their items readable by any account","analyst_note":"","how_to_check":"- Look up the Ryot version the instance runs; it is affected below `10.5.6`.\n- Check whether the instance allows more than one account (multi-user tenants), since the flaw only matters when other users' collections exist.","plain_action":"","needs_analyst":false,"not_affected_if":["version-10.5.6-or-later","single-user"],"who_is_affected":"Self-hosted Ryot instances older than 10.5.6 that have more than one user account. The flaw requires a valid login; a single-user instance has no other tenant's collections to expose. Instances already on 10.5.6 or later are not affected.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000686,"input_tokens":4356,"output_tokens":501,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119800':15A,18A '-2026':14A,17A '10.5.6':92C,176C 'accept':103C 'account':64B 'across':166C 'allow':141C 'annot':138C 'anoth':38B,147C 'app':32B 'applic':89C 'attack':61B 'authent':35B,118C,143C 'back':47B 'belong':73B 'boundari':169C 'caller':106C,130C 'caller-control':105C 'check':115C 'collabor':122C 'collect':12A,41B,52B,67B,99C,113C,148C,157C 'collectioncont':94C 'collectioncontentsinput.collection':108C 'complet':163C 'content':100C 'control':107C 'crates/services/collection/src/content_operations.rs':102C 'cve':13A,16A 'data':71B 'descript':54B,160C 'els':76B 'fix':173C 'full':57B 'get':46B 'graphql':19B,95C 'host':24B,29B,86C 'id':44B,68B,109C,133C,150C 'ident':51B,156C 'implement':97C 'instanc':80B 'issu':171C 'item':58B,164C 'let':33B 'list':59B,165C 'log':4A 'logged-in':3A 'may':126C 'name':53B,158C 'obtain':146C 'own':120C 'owner':49B,154C 'packag':20B 'person':30B,87C 'prior':90C 'privat':11A 'queri':96C 'read':8A,70B,152C 'request':37B 'respons':140C 'return':111C 'review':55B,161C 'ryot':1A,21B,25B,81C 'self':23B,28B,85C 'self-host':22B,27B,84C 'someon':75B 'tenant':168C 'track':31B,88C 'use':135C 'user':6A,10A,36B,39B,119C,132C,144C 'version':175C 'view':127C 'whether':116C 'without':114C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted Ryot instances older than 10.5.6 that have more than one user account. The flaw requires a valid login; a single-user instance has no other tenant's collections to expose. Instances already on 10.5.6 or later are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["graphql","medium","package","ryot","selfhosted"],"campaign_type":null,"search_a":"'-119800':15A,18A '-2026':14A,17A 'collect':12A 'cve':13A,16A 'log':4A 'logged-in':3A 'privat':11A 'read':8A 'ryot':1A 'user':6A,10A","search_b":"'account':64B 'anoth':38B 'app':32B 'attack':61B 'authent':35B 'back':47B 'belong':73B 'collect':41B,52B,67B 'data':71B 'descript':54B 'els':76B 'full':57B 'get':46B 'graphql':19B 'host':24B,29B 'id':44B,68B 'ident':51B 'instanc':80B 'item':58B 'let':33B 'list':59B 'name':53B 'owner':49B 'packag':20B 'person':30B 'read':70B 'request':37B 'review':55B 'ryot':21B,25B 'self':23B,28B 'self-host':22B,27B 'someon':75B 'track':31B 'user':36B,39B","search_c":"'10.5.6':92C,176C 'accept':103C 'across':166C 'allow':141C 'annot':138C 'anoth':147C 'applic':89C 'authent':118C,143C 'boundari':169C 'caller':106C,130C 'caller-control':105C 'check':115C 'collabor':122C 'collect':99C,113C,148C,157C 'collectioncont':94C 'collectioncontentsinput.collection':108C 'complet':163C 'content':100C 'control':107C 'crates/services/collection/src/content_operations.rs':102C 'descript':160C 'fix':173C 'graphql':95C 'host':86C 'id':109C,133C,150C 'ident':156C 'implement':97C 'issu':171C 'item':164C 'list':165C 'may':126C 'name':158C 'obtain':146C 'own':120C 'owner':154C 'person':87C 'prior':90C 'queri':96C 'read':152C 'respons':140C 'return':111C 'review':161C 'ryot':81C 'self':85C 'self-host':84C 'tenant':168C 'track':88C 'use':135C 'user':119C,132C,144C 'version':175C 'view':127C 'whether':116C 'without':114C","first_public_at":"2026-11-01T05:26:30+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119800","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119800","severity":null,"published_at":"2026-11-06T22:17:50+00:00","modified_at":"2026-11-06T22:17:50+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","fetched_at":"2026-11-06T22:44:32+00:00","note":null}],"documents":[{"id":90730,"url":"https://github.com/IgnisDa/ryot/commit/822cc6701b46aedbc436abbf02e7efb94afd5f05","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":90731,"url":"https://github.com/IgnisDa/ryot/releases/tag/v10.5.6","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":90732,"url":"https://github.com/IgnisDa/ryot/security/advisories/GHSA-pv32-9hxm-ph4v","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-01T05:26:30+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}