{"id":"CVE-2026-59963","kind":"vulnerability","aliases":["CVE-2026-59963"],"related":[],"title":"Tandoor Recipes: same-Space users can read other members' private recipe files","description":"Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Prior to 2.6.10, recipe utility endpoints retrieve same-Space Recipe objects without invoking the private-recipe owner or sharing permission when an authenticated member of a shared Space supplies another member's private recipe identifier to AI import, file, external-link, or share-link endpoints. Request processing uses api/ai-import/, api/get_recipe_file/, api/get_external_file_link/, api/share-link/, CustomRecipePermission. The attack works because the endpoints read private recipe files, send file bytes to the configured AI provider, or create and disclose external links without object-level authorization, and api/share-link/ can create a public link when Space sharing is enabled. This can expose private recipe files and sensitive uploaded content to another same-Space user and to configured external services. This issue is fixed in version 2.6.10.","summary":"Tandoor Recipes lets an authenticated member of a shared Space pass another member's private recipe ID to the AI import, file, external-link, or share-link endpoints, and those endpoints skip the owner and sharing checks. An attacker can read private recipe files and uploaded content, send them to the configured AI provider, or create public share links.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["django","package","self-hosted","shared-spaces","tandoor-recipes"],"not_affected_if":["no-shared-spaces","single-user-instance","version-2.6.10-or-later"],"how_to_check":"- Check the installed Tandoor version; affected releases are earlier than `2.6.10`\n- Confirm whether Space sharing is enabled and whether multiple users share a Space\n- Review the `api/ai-import/`, `api/get_recipe_file/`, `api/get_external_file_link/` and `api/share-link/` endpoints in access logs for requests referencing recipes owned by other users","fix":"- Upgrade Tandoor Recipes to `2.6.10` or later\n- If upgrading is delayed, disable Space sharing or restrict who can join shared Spaces\n- Rotate any AI provider keys and review share links if exposure is suspected","status":"open","published_at":"2026-10-16T20:17:23+00:00","first_seen_at":"2026-10-23T21:57:14+00:00","triaged_at":"2026-10-25T03:36:26+00:00","updated_at":"2026-10-25T03:36:26+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T03:36:26Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Tandoor Recipes to `2.6.10` or later\n- If upgrading is delayed, disable Space sharing or restrict who can join shared Spaces\n- Rotate any AI provider keys and review share links if exposure is suspected","reach":"network","title":"Tandoor Recipes: same-Space users can read other members' private recipe files","impact":"medium","summary":"Tandoor Recipes lets an authenticated member of a shared Space pass another member's private recipe ID to the AI import, file, external-link, or share-link endpoints, and those endpoints skip the owner and sharing checks. An attacker can read private recipe files and uploaded content, send them to the configured AI provider, or create public share links.","category":"package","nicknames":[],"who_cares":["tandoor-recipes","self-hosted","django","shared-spaces"],"confidence":0.8,"needs_auth":"yes","worst_case":"Another Space member reads private recipe files and uploaded content","analyst_note":"","how_to_check":"- Check the installed Tandoor version; affected releases are earlier than `2.6.10`\n- Confirm whether Space sharing is enabled and whether multiple users share a Space\n- Review the `api/ai-import/`, `api/get_recipe_file/`, `api/get_external_file_link/` and `api/share-link/` endpoints in access logs for requests referencing recipes owned by other users","needs_analyst":false,"not_affected_if":["single-user-instance","version-2.6.10-or-later","no-shared-spaces"],"who_is_affected":"Self-hosted or managed Tandoor instances running a version before `2.6.10` where users share a Space and private recipes exist. Single-user instances, or instances without shared Spaces, have no other same-Space member to exploit it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000674,"input_tokens":3513,"output_tokens":645,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-59963':16A,19A '2.6.10':108C,231C 'ai':50B,85B,144C,179C 'anoth':42B,137C,215C 'api/ai-import':158C 'api/get_external_file_link':160C 'api/get_recipe_file':159C 'api/share-link':161C,193C 'applic':96C 'attack':71B,164C 'authent':35B,130C 'author':191C 'build':103C 'byte':175C 'check':69B 'configur':84B,178C,222C 'content':79B,213C 'creat':88B,182C,195C 'customrecipepermiss':162C 'cve':14A,17A 'disclos':184C 'django':20B 'enabl':203C 'endpoint':60B,63B,111C,154C,168C 'expos':206C 'extern':54B,148C,185C,223C 'external-link':53B,147C 'file':13A,52B,76B,146C,172C,174C,209C 'fix':228C 'host':24B 'id':47B 'identifi':142C 'import':51B,145C 'invok':119C 'issu':226C 'let':33B 'level':190C 'link':55B,59B,91B,149C,153C,186C,198C 'list':105C 'manag':98C 'meal':101C 'member':10A,36B,43B,131C,138C 'object':117C,189C 'object-level':188C 'owner':66B,124C 'packag':21B 'pass':41B 'permiss':127C 'plan':100C 'prior':106C 'privat':11A,45B,74B,122C,140C,170C,207C 'private-recip':121C 'process':156C 'provid':86B,180C 'public':89B,197C 'read':8A,73B,169C 'recip':2A,12A,30B,32B,46B,75B,93C,99C,109C,116C,123C,141C,171C,208C 'request':155C 'retriev':112C 'same-spac':3A,113C,216C 'self':23B 'self-host':22B 'send':80B,173C 'sensit':211C 'servic':224C 'share':26B,39B,58B,68B,90B,126C,134C,152C,201C 'share-link':57B,151C 'shared-spac':25B 'shop':104C 'skip':64B 'space':5A,27B,40B,115C,135C,200C,218C 'suppli':136C 'tandoor':1A,29B,31B,92C 'tandoor-recip':28B 'upload':78B,212C 'use':157C 'user':6A,219C 'util':110C 'version':230C 'without':118C,187C 'work':165C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted or managed Tandoor instances running a version before `2.6.10` where users share a Space and private recipes exist. Single-user instances, or instances without shared Spaces, have no other same-Space member to exploit it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T20:17:23+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-59963","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59963","severity":null,"published_at":"2026-10-16T20:17:23+00:00","modified_at":"2026-10-19T21:14:14+00:00","first_seen_at":"2026-10-23T21:57:14+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"}