Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as shared Space member
-
ExploitEnumerate victim's sequential BookmarkletImport primary key
-
ExecutionSubmit ID to /api/recipe-from-source/ endpoint
-
ImpactDisclose captured page content and delete victim's pending import
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | The attacker must hold a valid authenticated account that is a member of the SAME shared Space as the victim (PR:L), and the victim must have a pending BookmarkletImport record in that Space. The specific trigger is submitting another member's BookmarkletImport primary key to POST /api/recipe-from-source/; because the pre-2.6.10 code filtered only by pk (and implicitly Space) without checking created_by, cross-member access succeeds. Limiting factors: exploitation is confined to co-tenants of a shared Space, requires authentication, and only affects versions prior to 2.6.10 - single-user or non-shared Space deployments are not exposed, and there is no user interaction or non-default configuration required beyond having multiple members in a Space. |
| Impact | This is a medium-severity authorization flaw (IDOR/BOLA, CWE-639) with a CVSS 3.1 score of 5.4 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L), and the real-world risk signals are consistent and modest. The CVSS vector requires low privileges (PR:L), meaning an authenticated account that is a member of the same shared Space is a hard prerequisite - this is not remote-unauthenticated. No EPSS score, KEV listing, or POC was provided in the intelligence, so exploitation status is 'no public exploit identified at time of analysis'; the absence of these signals, combined with the low-to-medium confidentiality and availability impact (C:L/A:L, no integrity impact), indicates this is a genuine but non-urgent authorization bug rather than a high-priority mass-exploitation threat. The attack is logically simple (sequential primary-key enumeration) and the patch is confirmed in the vendor commit, so the main residual risk is insider/cross-tenant abuse within multi-member Spaces rather than internet-wide attack. No conflicting signals were observed: the network attack vector is accurate because the endpoint is a web API, but it is gated by shared-Space membership, which the raw AV:N does not convey - treat the practical blast radius as limited to co-tenants. |
| Exploit ScenarioDerived | A legitimate user who shares a Tandoor Recipes Space with a victim guesses or increments the sequential BookmarkletImport primary key belonging to the victim and submits it to POST /api/recipe-from-source/. The endpoint returns the victim's stored URL and captured page content (disclosing potentially private/authenticated content) and then unconditionally deletes the victim's pending import. No public exploit code was identified, but the attack requires only a valid account in the same Space and trivial ID enumeration. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
An insecure direct object reference (IDOR/BOLA) in Tandoor Recipes prior to 2.6.10 lets an authenticated member of a shared Space read and destroy another member's pending bookmarklet import. By submitting a co-tenant's BookmarkletImport primary key to POST /api/recipe-from-source/, the attacker causes the endpoint to return the victim's stored source URL and captured page content and then unconditionally delete that pending record, yielding limited confidentiality loss and a low-impact availability/denial effect against the victim's import workflow. Exploitation requires a valid account in the same shared Space as the victim (CVSS 3.1 5.4, PR:L, no user interaction), exposing only multi-member deployments; single-user or non-shared Spaces are not affected, and no public exploit code was identified at time of analysis.
RemediationAI
Upgrade to Tandoor Recipes 2.6.10 or later, which is the vendor-released patch: the fix commit 18e13a3493eb7cd7ce309009c5ed2faef5a86ef5 changes the BookmarkletImport lookup in cookbook/views/api.py to filter(pk=b_pk, space=request.space, created_by=request.user).first(), enforcing both Space and owner scoping on POST /api/recipe-from-source/. Confirm the upgrade against the release notes at https://github.com/TandoorRecipes/recipes/releases/tag/2.6.10 and the advisory at https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-4vw7-c646-g23w. If immediate patching is not possible, compensating controls are limited and carry trade-offs: restrict membership of shared Spaces to fully trusted users, since the exploit requires an authenticated co-tenant (this reduces collaboration capability but removes the attack precondition), or temporarily block or rate-limit POST /api/recipe-from-source/ at the reverse proxy for accounts outside a trusted set (this breaks the bookmarklet import feature for legitimate users), or disable the bookmarklet import workflow entirely until the patch is applied (functional loss with no residual exposure via this endpoint). Pending imports should be treated as potentially disclosed and regenerated after patching, and audit logs for /api/recipe-from-source/ should be reviewed for unexpected primary-key enumeration by Space members.
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-based recipe manager, and the affected code lives in cookbook/views/api.py in the APIView that services POST /api/recipe-from-source/. That view handles a "bookmarklet" workflow: a user's browser bookmarklet captures a page URL and scraped content, which is persisted in the BookmarkletImport model so the server can later fetch or import the recipe from it. The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key): the lookup was written as BookmarkletImport.objects.filter(pk=b_pk).first(), scoping the record only by the sequential primary key (and, implicitly, by Space in surrounding queryset logic) but never constraining created_by to request.user. Because primary keys are sequential and guessable, any authenticated co-member of the same Space could supply another member's import ID, have the view dereference and return that record's stored URL and captured page content, and then trigger the view's filter/delete logic, which removes the victim's pending import unconditionally. The fix in commit 18e13a3493eb7cd7ce309009c5ed2faef5a86ef5 hardens the queryset to filter(pk=b_pk, space=request.space, created_by=request.user).first(), adding the missing owner check and re-anchoring the object to the requester's active Space, which restores object-level authorization on the endpoint.
Know when 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
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L
Web API reachable over network (AV:N/AC:L) but gated by an authenticated shared-Space account (PR:L); limited disclosure of captured content (C:L) and deletion of one pending import (A:L), no data modification (I:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
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.
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.
Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Rated critical seve
Tandoor Recipes prior to 2.5.1 contains a blind server-side request forgery vulnerability in the Cookmate recipe import
Tandoor Recipes 2.0.0-alpha-1, fixed in 2.0.0-alpha-2, is vulnerable to privilege escalation. Rated medium severity (CVS
Recipes version 1.5.10 allows arbitrary HTTP requests to be made through the server. Rated medium severity (CVSS 6.5), t
In Recipes, versions 0.9.1 through 1.2.5 are vulnerable to Server Side Request Forgery (SSRF), in the “Import Recipe” fu
Tandoor Recipes versions prior to 2.6.0 allow unlimited brute-force password guessing attacks against any known username
Path traversal in Tandoor Recipes prior to 2.5.1 allows authenticated users with import permissions to read arbitrary fi
Broken object-level authorization in Tandoor Recipes before 2.6.12 lets an authenticated member of the same Space, holdi
Privilege escalation in Tandoor Recipes prior to version 2.6.4 allows authenticated users with read-only shared access t
Authenticated users can modify and expose private recipes in Tandoor Recipes through broken object-level authorization i
Tandoor Recipes versions through 2.5.3 permit Host header injection attacks that enable invite link poisoning, allowing
Authenticated blind server-side request forgery in Tandoor Recipes before 2.6.10 allows a user with privileges to create
EUVD-2026-102948
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB