{"id":"CVE-2026-59967","kind":"vulnerability","aliases":["CVE-2026-59967"],"related":[],"title":"Tandoor Recipes: shared-space members can read and delete others' pending imports","description":"Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Prior to 2.6.10, looks up BookmarkletImport by sequential primary key within the active Space without restricting created_by to the requesting user when an authenticated member of a shared Space submits another member's pending bookmarklet identifier to POST /api/recipe-from-source/. Request processing uses api/recipe-from-source/, BookmarkletImport, filter, delete. The attack works because the endpoint parses and returns the victim's stored URL and captured page content, then unconditionally deletes the victim's pending import. This can disclose authenticated or private captured page content and destroy another Space member's pending import. This issue is fixed in version 2.6.10.","summary":"Tandoor Recipes lets an authenticated member of a shared Space submit another member's pending bookmarklet import ID to the recipe-from-source endpoint. The request returns that member's stored URL and captured page content and then deletes their pending import.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["docker","package","self-hosted","tandoor-recipes"],"not_affected_if":["bookmarklet-import-unused","single-user-space","upgraded-to-2.6.10"],"how_to_check":"- Check the installed Tandoor version; `unknown` for the exact check command, the sources do not say how to read it from a deployment\n- Confirm whether users share a Space with members who should not see each other's bookmarklet imports","fix":"- Upgrade Tandoor Recipes to `2.6.10` or later","status":"open","published_at":"2026-10-16T17:17:35+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","triaged_at":"2026-10-25T04:18:30+00:00","updated_at":"2026-10-25T04:18:30+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T04:18:30Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Tandoor Recipes to `2.6.10` or later","reach":"network","title":"Tandoor Recipes: shared-space members can read and delete others' pending imports","impact":"low","summary":"Tandoor Recipes lets an authenticated member of a shared Space submit another member's pending bookmarklet import ID to the recipe-from-source endpoint. The request returns that member's stored URL and captured page content and then deletes their pending import.","category":"package","nicknames":[],"who_cares":["tandoor-recipes","self-hosted","docker"],"confidence":0.8,"needs_auth":"yes","worst_case":"another member's captured page content is read and their pending import is deleted","analyst_note":"","how_to_check":"- Check the installed Tandoor version; `unknown` for the exact check command, the sources do not say how to read it from a deployment\n- Confirm whether users share a Space with members who should not see each other's bookmarklet imports","needs_analyst":false,"not_affected_if":["upgraded-to-2.6.10","single-user-space","bookmarklet-import-unused"],"who_is_affected":"Teams running Tandoor Recipes before 2.6.10 where several users share a Space and use the bookmarklet import feature. The attacker needs a normal account in the same Space as the victim, and the victim's pending import ID must be guessable by sequence. Single-user installs have no other member to target.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000604,"input_tokens":3456,"output_tokens":517,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-59967':16A,19A '/api/recipe-from-source':124C '2.6.10':87C,181C 'activ':97C 'anoth':39B,116C,169C 'api/recipe-from-source':128C 'applic':75C 'attack':133C 'authent':32B,109C,161C 'bookmarklet':43B,120C 'bookmarkletimport':90C,129C 'build':82C 'captur':62B,147C,164C 'content':64B,149C,166C 'creat':101C 'cve':14A,17A 'delet':10A,67B,131C,152C 'destroy':168C 'disclos':160C 'docker':20B 'endpoint':52B,137C 'filter':130C 'fix':178C 'host':24B 'id':45B 'identifi':121C 'import':13A,44B,70B,157C,174C 'issu':176C 'key':94C 'let':30B 'list':84C 'look':88C 'manag':77C 'meal':80C 'member':6A,33B,40B,57B,110C,117C,171C 'other':11A 'packag':21B 'page':63B,148C,165C 'pars':138C 'pend':12A,42B,69B,119C,156C,173C 'plan':79C 'post':123C 'primari':93C 'prior':85C 'privat':163C 'process':126C 'read':8A 'recip':2A,27B,29B,49B,72C,78C 'recipe-from-sourc':48B 'request':54B,105C,125C 'restrict':100C 'return':55B,140C 'self':23B 'self-host':22B 'sequenti':92C 'share':4A,36B,113C 'shared-spac':3A 'shop':83C 'sourc':51B 'space':5A,37B,98C,114C,170C 'store':59B,144C 'submit':38B,115C 'tandoor':1A,26B,28B,71C 'tandoor-recip':25B 'uncondit':151C 'url':60B,145C 'use':127C 'user':106C 'version':180C 'victim':142C,154C 'within':95C 'without':99C 'work':134C","nicknames":[],"mitigations":[],"who_affected":"Teams running Tandoor Recipes before 2.6.10 where several users share a Space and use the bookmarklet import feature. The attacker needs a normal account in the same Space as the victim, and the victim's pending import ID must be guessable by sequence. Single-user installs have no other member to target.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T17:17:35+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-59967","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59967","severity":null,"published_at":"2026-10-16T17:17:35+00:00","modified_at":"2026-10-19T13:16:58+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","fetched_at":"2026-10-23T22:28:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}