/

CVE-2026-112342

Severity:

HIGH RISK

(7.1)

Authorization Bypass (CWE-863) in Tandoor Recipes App

CVE-2026-112342

Deferred

Vulnerability type

Category:

Incorrect Authorization

CWE:

CWE-863

Impact:

Privilege Escalation and Authorization Bypass

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 a cache-key design flaw that can preserve a user's higher group-based permissions when they switch between spaces. An authenticated user who receives administrative access in one space may retain stale authorization decisions in another space, potentially bypassing intended permission restrictions and revocations.

Tandoor Recipes contains a cache-key design flaw that can preserve a user's higher group-based permissions when they switch between spaces. An authenticated user who receives administrative access in one space may retain stale authorization decisions in another space, potentially bypassing intended permission restrictions and revocations.

Affected context

The vulnerability affects Tandoor Recipes deployments that use space-specific group permissions with the affected permission cache behavior. The cache key identifies entries by user but does not include the active space, while the cache lifetime can be refreshed by subsequent requests. The issue becomes risky when a user has different group memberships or privilege levels across spaces.

The vulnerability affects Tandoor Recipes deployments that use space-specific group permissions with the affected permission cache behavior. The cache key identifies entries by user but does not include the active space, while the cache lifetime can be refreshed by subsequent requests. The issue becomes risky when a user has different group memberships or privilege levels across spaces.

Exploit preconditions

  • Attack surface: Authenticated application views and permission checks involving multiple spaces
  • Required access: A valid user account with the ability to create or access a space and switch the active space
  • Trigger point: Permission evaluation and caching while moving between spaces
  • Why exploitation is possible: Cached authorization results are associated with the user identity but not the active space, allowing a decision from one context to be reused in another
  • Attack surface: Authenticated application views and permission checks involving multiple spaces
  • Required access: A valid user account with the ability to create or access a space and switch the active space
  • Trigger point: Permission evaluation and caching while moving between spaces
  • Why exploitation is possible: Cached authorization results are associated with the user identity but not the active space, allowing a decision from one context to be reused in another

Why this happens

The underlying bug is an authorization cache-key design error. A permission decision that depends on both the user and the active space is cached using only the user identifier, so the result is not isolated between authorization contexts. Refreshing the time-to-live on each request can extend the lifetime of the incorrect decision. This maps to CWE-863: Incorrect Authorization, because the application may grant access based on a stale or contextually invalid permission result.

The underlying bug is an authorization cache-key design error. A permission decision that depends on both the user and the active space is cached using only the user identifier, so the result is not isolated between authorization contexts. Refreshing the time-to-live on each request can extend the lifetime of the incorrect decision. This maps to CWE-863: Incorrect Authorization, because the application may grant access based on a stale or contextually invalid permission result.

Potential impact

  • An authenticated user may retain administrative permissions after switching spaces
  • Access checks may be bypassed in spaces where the user has fewer privileges
  • Group revocations, demotions, or membership changes may not take effect promptly
  • Protected data or management functions may be exposed within affected spaces
  • Unauthorized changes could be made through views using the stale permission decision
  • An authenticated user may retain administrative permissions after switching spaces
  • Access checks may be bypassed in spaces where the user has fewer privileges
  • Group revocations, demotions, or membership changes may not take effect promptly
  • Protected data or management functions may be exposed within affected spaces
  • Unauthorized changes could be made through views using the stale permission decision

General mitigation guidance

Mitigation generally focuses on preserving authorization context throughout permission evaluation and caching.

Common defensive patterns include:

  • Include every authorization-relevant dimension, including the active space, in cache keys
  • Avoid caching authorization decisions when the context cannot be represented reliably
  • Invalidate or recompute cached permissions after group, role, membership, or space changes
  • Apply secure-by-default denial when authorization context is missing or ambiguous
  • Enforce authorization independently at each sensitive view or operation
  • Limit administrative capabilities according to least privilege
  • Treat client-selected active-space values as untrusted and resolve them against server-side membership data

Mitigation generally focuses on preserving authorization context throughout permission evaluation and caching.

Common defensive patterns include:

  • Include every authorization-relevant dimension, including the active space, in cache keys
  • Avoid caching authorization decisions when the context cannot be represented reliably
  • Invalidate or recompute cached permissions after group, role, membership, or space changes
  • Apply secure-by-default denial when authorization context is missing or ambiguous
  • Enforce authorization independently at each sensitive view or operation
  • Limit administrative capabilities according to least privilege
  • Treat client-selected active-space values as untrusted and resolve them against server-side membership data

How teams detect issues like this

Organizations can assess this class of issue through:

  • Static analysis and code review of permission-cache key construction
  • Searches for cached authorization results keyed only by user, session, or token identifiers
  • Tests that switch users between spaces, tenants, projects, or organizations with different roles
  • Regression tests covering role changes, revocations, demotions, and cache expiration behavior
  • Monitoring for access to administrative views that is inconsistent with current group membership
  • Policy checks requiring authorization caches to encode all relevant resource and tenant context

Automated security review tools may help identify cache usage and authorization checks that lack context-bound identifiers.

Organizations can assess this class of issue through:

  • Static analysis and code review of permission-cache key construction
  • Searches for cached authorization results keyed only by user, session, or token identifiers
  • Tests that switch users between spaces, tenants, projects, or organizations with different roles
  • Regression tests covering role changes, revocations, demotions, and cache expiration behavior
  • Monitoring for access to administrative views that is inconsistent with current group membership
  • Policy checks requiring authorization caches to encode all relevant resource and tenant context

Automated security review tools may help identify cache usage and authorization checks that lack context-bound identifiers.

Sources

SourceLink
github.comgithub.com/TandoorRecipes/recipes/commit/1285f5009aa166c0d6f8658849eed5686294d5e9
github.comgithub.com/TandoorRecipes/recipes/releases/tag/2.7.0
github.comgithub.com/TandoorRecipes/recipes/security/advisories/GHSA-69q3-5q6x-7hmx
vulncheck.comvulncheck.com/advisories/tandoor-recipes-cross-space-permission-cache-poisoning

Frequently asked

questions

It can be exploitable through the application by an authenticated user, provided the deployment allows that user to create or access multiple spaces and switch between them.

No. The attacker generally needs a valid account and enough access to obtain a higher group designation in one space. The flaw may then cause that stale authorization result to be reused in another space.

Bind cached permission decisions to the complete authorization context, especially the active space, and invalidate or recompute decisions whenever memberships or roles change.

Test authorization across tenant or space boundaries, review cache keys for missing security context, enforce least privilege, and verify that revocations take effect without relying solely on cache expiration.

It can be exploitable through the application by an authenticated user, provided the deployment allows that user to create or access multiple spaces and switch between them.

No. The attacker generally needs a valid account and enough access to obtain a higher group designation in one space. The flaw may then cause that stale authorization result to be reused in another space.

Bind cached permission decisions to the complete authorization context, especially the active space, and invalidate or recompute decisions whenever memberships or roles change.

Test authorization across tenant or space boundaries, review cache keys for missing security context, enforce least privilege, and verify that revocations take effect without relying solely on cache expiration.

Find out what's already
exploitable in your codebase.