Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege space member
-
DeliveryCreate own space via POST /api/space/
-
ExploitAuto-granted admin group, prime GROUP_CACHE_<pk>
-
ExecutionSwitch active space to victim space
-
ImpactStale cached admin authorizes elevated access, bypass revocations
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a multi-space (multi-tenant) Tandoor deployment and an attacker who is already an authenticated member of at least one space (PR:L). The attacker leverages the ability to create a new space (POST /api/space/), which auto-grants the creator that space's admin group, then uses switch_user_active_space() to move into a victim space; because has_group_permission() keys GROUP_CACHE_<pk> on user id only (omitting the active space) and refreshes the 30-second TTL on every request, the previously cached admin groups keep authorizing checks indefinitely under continuous activity. Limiting factors: the vulnerability is irrelevant on single-space instances; authentication is required; and the default per-process LocMemCache means the stale entry lives only in the worker that primed it, so on multi-worker deployments the subsequent escalated request must reach that same worker to succeed. |
| Impact | This is a genuine but conditional privilege-escalation flaw (CWE-863, Incorrect Authorization) rated CVSS 4.0 7.1 with vector AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N. The signals are internally consistent: network vector, low complexity, no user interaction, and low privilege (PR:L) matching the requirement that the attacker already be an authenticated member of the Tandoor instance; integrity impact is High (VI:H) because the attacker gains unauthorized admin-level write/control in a victim space, while confidentiality is Low and availability None. There is no CISA KEV listing and no EPSS score in the supplied data, so there is no evidence of active or widespread exploitation; the vuln.today decision label is 'this_week' (not act_now/emergency), indicating prompt-but-not-crisis remediation. The researcher (VulnCheck) provides a verified proof-of-concept harness in the GHSA advisory, and the advisory notes the attack is self-serviceable, which raises practical concern above a theoretical finding. The key limiter is that real-world risk is confined to multi-space (multi-tenant) deployments - single-space self-hosted instances are effectively unaffected - and the default per-process LocMemCache means that on multi-worker deployments the follow-up malicious request must land on the same worker that primed the stale cache, reducing reliability. Net: a real priority for shared/multi-tenant Tandoor instances, lower concern for typical single-user self-hosting. |
| Exploit ScenarioDerived | On a shared multi-space Tandoor instance, an authenticated low-privilege user creates their own space via POST /api/space/ and is automatically granted that space's admin group; one request as admin primes the GROUP_CACHE_<pk> cache entry with admin group names. The user then switches their active space to a victim space where they are only a guest/user, and the stale cached admin decision authorizes elevated actions and defeats group revocations. A verified PoC harness demonstrating the control/bypass/revocation sequence is described in the GHSA advisory (VulnCheck). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Privilege escalation in Tandoor Recipes before 2.7.0 lets any authenticated user obtain admin-level authorization inside a space where they only hold guest or user rights, by priming a per-user permission cache while their own self-created space is active. The flaw is in has_group_permission(), which caches group names under GROUP_CACHE_<user id> with no active-space component and re-sets the 30-second TTL on every request, so cached admin groups from space A keep answering checks after switch_user_active_space() moves the session into victim space B - and group revocations or demotions never take effect while the user stays active. Rated CVSS 4.0 7.1 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N); exploitation needs a multi-space deployment, an authenticated account, and - on multi-worker installs using the default per-process LocMemCache - the escalated request must land on the worker that primed the entry. Not listed in CISA KEV, but the vendor advisory documents a verified proof-of-concept harness against the real functions, so the technique is fully public and reproducible.
RemediationAI
Vendor-released patch: upgrade to Tandoor Recipes 2.7.0 (release https://github.com/TandoorRecipes/recipes/releases/tag/2.7.0), which contains commit 1285f5009aa166c0d6f8658849eed5686294d5e9; the advisory at https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-69q3-5q6x-7hmx should be treated as the authoritative reference. Plan the upgrade carefully: the 2.7.0 release notes carry breaking authentication changes - the api-token-auth/ endpoint is removed, SOCIALACCOUNT_ONLY, SOCIALACCOUNT_LOGIN_ON_GET and SOCIALACCOUNT_AUTO_SIGNUP are removed, ENABLE_SIGNUP now also blocks social signups, an ACCOUNT_EMAIL_VERIFICATION setting (default optional) is added, and LDAP/proxy auth are explicitly untested - so third-party API clients and social-login users must be re-validated or migrated to the supported authentication flow. Where immediate upgrade is not possible, the only actionable compensating control is to remove the attacker's ability to self-provision an admin group: restrict or disable the space-creation endpoint (POST /api/space/) via a reverse-proxy rule or a Django permission layer so that only trusted operators can create spaces, with the trade-off that self-service multi-user space provisioning breaks for ordinary members. Purging GROUP_CACHE_ entries is not a durable mitigation because the attacker can re-prime the key from their own space at any time; likewise, the default per-process LocMemCache only incidentally limits the stale entry to the worker that created it, and an attacker can prime each worker in turn. Because group revocations and demotions do not take effect while a cached user remains continuously active, revoked or demoted administrators should be deactivated rather than merely demoted until the upgrade is complete.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Tandoor Recipes is a Django recipe-management application whose multi-tenancy is implemented through UserSpace rows; a user can belong to several spaces with different group memberships (guest, user, admin). Authorization is decided by cookbook/helper/permission_helper.py: has_group_permission() reads the active UserSpace's group names only on a cache miss, storing them under CACHE_KEY = 'GROUP_CACHE_' + str(request.user.pk). Because the key is derived solely from the user id and omits the active space, the cached list is not scoped to the tenant whose permissions it represents. switch_user_active_space() flips the active flag on UserSpace rows but never deletes the entry, and no code path anywhere invalidates a GROUP_CACHE_ key - the UserSpace signal receivers in cookbook/signals.py only clear the household_user_ids cache. Compounding this, cache.set(..., timeout=30) is executed unconditionally, including on hits, so each request resets the TTL and under continuous activity the stale entry never expires. The poisoned decision feeds every group-based permission class (CustomIsGuest, CustomIsUser, CustomIsAdmin, CustomRecipePermission, CustomAiProviderPermission, CustomUserPermission), GroupRequiredMixin views, and function-based views using those checks - which is why the impact spans multiple permission classes and views. This is CWE-863 (Incorrect Authorization) manifesting as a cross-tenant cache-key collision; the advisory notes it is the same defect class previously described in GHSA-29pm-4vh2-f8mp for the old hash-based key, and that the 2.6.15 rework (commit 395f752) swapped the key format but preserved both the missing space component and the missing invalidation while adding the TTL-refresh behavior. The code is reported unchanged in 2.6.15, in a5179f8 and on develop.
Know when Tandoor Recipes gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N
Authenticated member exploits over the network with low complexity and no interaction (PR:L, AC:L, UI:N); gains admin-level control yielding high integrity impact, limited confidentiality exposure, and no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Tandoor Recipes before 2.7.0 contains an improper cache-key design in cookbook/helper/permission_helper.py that allows authenticated users to retain stale group-based permissions across different spaces by exploiting a cache key keyed only on user id while omitting the active space, with the cached entry's TTL refreshed on every request. Attackers can create their own space to obtain an admin group designation, then switch their active space to a victim space where they hold lesser privileges, causing the stale cached admin decision to authorize elevated access and bypass group revocations or demotions across multiple permission classes and views.
Technical POC Analysis
CWE-863 (Incorrect Authorization) in cookbook/helper/permissionhelper.py, function hasgrouppermission().
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity privilege escalation in Tandoor Recipes (versions before 2.7.0) allows authenticated users to gain admin rights in spaces where they are only guests or users, potentially leading to unauthorized data modification (integrity impact). The vulnerability requires a multi-space deployment and affects all users with valid accounts; leadership should prioritize remediation because it undermines access control and could enable lateral movement within the application.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-109121
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB