/

CVE-2026-59963

Severity:

HIGH RISK

(7.1)

Broken Object Authorization (CWE-639) in Tandoor Recipes

CVE-2026-59963

Deferred

Vulnerability type

Category:

Broken Object-Level Authorization

CWE:

CWE-639

Impact:

Unauthorized access and disclosure of private recipe content

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Tandoor Recipes contains an object-level authorization flaw in recipe utility endpoints that can expose private recipes to other authenticated members of the same shared Space. An attacker who knows another user's private recipe identifier may retrieve files, send content to the configured AI provider, or create and disclose external or public links.

Tandoor Recipes contains an object-level authorization flaw in recipe utility endpoints that can expose private recipes to other authenticated members of the same shared Space. An attacker who knows another user's private recipe identifier may retrieve files, send content to the configured AI provider, or create and disclose external or public links.

Affected context

The issue affects Tandoor Recipes deployments where authenticated users share a Space and can reach recipe utility endpoints such as AI import, file retrieval, external-link generation, or share-link creation. The risk arises when these endpoints retrieve a Recipe object by identifier without consistently applying the private-recipe owner's permission or the applicable sharing rules.

The issue affects Tandoor Recipes deployments where authenticated users share a Space and can reach recipe utility endpoints such as AI import, file retrieval, external-link generation, or share-link creation. The risk arises when these endpoints retrieve a Recipe object by identifier without consistently applying the private-recipe owner's permission or the applicable sharing rules.

Exploit preconditions

  • Attack surface: Authenticated recipe utility API endpoints
  • Required access: Membership in the relevant shared Space and knowledge of, or ability to obtain, a private recipe identifier
  • Trigger point: Processing a private recipe identifier through AI import, file, external-link, or share-link functionality
  • Why exploitation is possible: Object retrieval is not followed by adequate owner or sharing authorization before private files are read, transmitted, or exposed through generated links
  • Attack surface: Authenticated recipe utility API endpoints
  • Required access: Membership in the relevant shared Space and knowledge of, or ability to obtain, a private recipe identifier
  • Trigger point: Processing a private recipe identifier through AI import, file, external-link, or share-link functionality
  • Why exploitation is possible: Object retrieval is not followed by adequate owner or sharing authorization before private files are read, transmitted, or exposed through generated links

Why this happens

The underlying flaw is missing object-level authorization, mapped to CWE-639: Authorization Bypass Through User-Controlled Key. The affected endpoints accept a recipe identifier and retrieve the corresponding object, but do not reliably verify whether the requesting Space member may access that specific private recipe. This creates an insecure direct-object-reference pattern in which a valid identifier is treated as sufficient authority.

The underlying flaw is missing object-level authorization, mapped to CWE-639: Authorization Bypass Through User-Controlled Key. The affected endpoints accept a recipe identifier and retrieve the corresponding object, but do not reliably verify whether the requesting Space member may access that specific private recipe. This creates an insecure direct-object-reference pattern in which a valid identifier is treated as sufficient authority.

Potential impact

  • Private recipe files and uploaded content may be disclosed to another same-Space user
  • Sensitive file bytes may be transmitted to a configured external AI provider
  • Attackers may generate external links exposing recipe content
  • Public links may be created when Space sharing permits that behavior
  • Confidentiality of household, organizational, or user-provided recipe data could be reduced
  • Private recipe files and uploaded content may be disclosed to another same-Space user
  • Sensitive file bytes may be transmitted to a configured external AI provider
  • Attackers may generate external links exposing recipe content
  • Public links may be created when Space sharing permits that behavior
  • Confidentiality of household, organizational, or user-provided recipe data could be reduced

General mitigation guidance

Mitigation generally centers on enforcing authorization at every object access, rather than relying on Space membership or identifier possession alone.

Common defensive patterns include:

  • Apply owner, private-recipe, and sharing-policy checks before reading, exporting, or linking any Recipe object
  • Centralize object-level authorization so all utility endpoints use the same decision logic
  • Treat recipe identifiers as references, not proof of access
  • Minimize transmission of private files to external services and require explicit authorization for such processing
  • Use least privilege for link creation and default generated links to private or non-public visibility
  • Record and review access to private recipe files and link-generation operations

Mitigation generally centers on enforcing authorization at every object access, rather than relying on Space membership or identifier possession alone.

Common defensive patterns include:

  • Apply owner, private-recipe, and sharing-policy checks before reading, exporting, or linking any Recipe object
  • Centralize object-level authorization so all utility endpoints use the same decision logic
  • Treat recipe identifiers as references, not proof of access
  • Minimize transmission of private files to external services and require explicit authorization for such processing
  • Use least privilege for link creation and default generated links to private or non-public visibility
  • Record and review access to private recipe files and link-generation operations

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis and review rules that flag object lookups based directly on request identifiers
  • Code review checks confirming authorization occurs after object retrieval and before every sensitive operation
  • Test cases using two users in the same Space, including private recipes owned by each user
  • API policy tests covering file retrieval, AI submission, external-link generation, and share-link creation
  • Audit monitoring for unusual access to private recipe identifiers or repeated link-generation requests

Automated application-security review tools may help identify missing object-level authorization paths, but authorization behavior should also be verified with integration tests.

Organizations can look for this class of issue through:

  • Static analysis and review rules that flag object lookups based directly on request identifiers
  • Code review checks confirming authorization occurs after object retrieval and before every sensitive operation
  • Test cases using two users in the same Space, including private recipes owned by each user
  • API policy tests covering file retrieval, AI submission, external-link generation, and share-link creation
  • Audit monitoring for unusual access to private recipe identifiers or repeated link-generation requests

Automated application-security review tools may help identify missing object-level authorization paths, but authorization behavior should also be verified with integration tests.

Sources

SourceLink
github.comgithub.com/TandoorRecipes/recipes/commit/82fd4e00f1387a1c466489989f2e94487149f7f4
github.comgithub.com/TandoorRecipes/recipes/commit/8b4a4c06902d024609d7376b6c45f5ea4f9bed07
github.comgithub.com/TandoorRecipes/recipes/releases/tag/2.6.10
github.comgithub.com/TandoorRecipes/recipes/security/advisories/GHSA-cqj3-64qw-4w52

Frequently asked

questions

An authenticated member of a shared Space may be able to exploit it when they can supply another member's private recipe identifier and reach an affected endpoint.

Yes. The vulnerable behavior is triggered by requesting a specific Recipe object through a user-controlled identifier. Knowledge of the identifier may be obtained through application behavior, logs, exports, or other disclosure paths.

Enforce owner and sharing permissions for the specific Recipe object before reading files, sending content to external providers, or creating any external or public link.

Centralize object-level authorization, test access using multiple users and private objects, avoid treating identifiers as authorization, and monitor sensitive object access and link creation.

An authenticated member of a shared Space may be able to exploit it when they can supply another member's private recipe identifier and reach an affected endpoint.

Yes. The vulnerable behavior is triggered by requesting a specific Recipe object through a user-controlled identifier. Knowledge of the identifier may be obtained through application behavior, logs, exports, or other disclosure paths.

Enforce owner and sharing permissions for the specific Recipe object before reading files, sending content to external providers, or creating any external or public link.

Centralize object-level authorization, test access using multiple users and private objects, avoid treating identifiers as authorization, and monitor sensitive object access and link creation.

Find out what's already
exploitable in your codebase.