Skip to main content

Tandoor Recipes CVE-2026-115810

| EUVDEUVD-2026-109097 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-23 VulnCheck GHSA-2rvv-3hmc-xc55
6.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged user
  2. Delivery
    Craft Pestle import with internal image URL
  3. Exploit
    POST file to /api/import/ (type=PESTLE)
  4. Execution
    Server issues unhardened GET to internal host
  5. Impact
    Exfiltrate internal response via stored recipe image

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a valid authenticated account holding only the standard space 'user' role (no admin) and access to the Pestle import endpoint POST /api/import/ with type=PESTLE - a default-available feature present since v2.6.15. The attacker controls the image URL field inside the uploaded Pestle JSON. The limiting factors are: (1) authentication is mandatory (PR:L - a low-privileged token/account must be obtained first), and (2) the read channel is constrained to responses that are stored and retrievable as a recipe image, so exfiltration favors image-parseable internal responses, though blind port/service discovery and reaching internal/metadata endpoints work regardless. No user interaction by a victim is required. Real-world severity rises sharply when Tandoor runs in a cloud environment where 169.254.169.254 instance metadata is reachable.

Impact

This is a genuine but moderate-priority issue, not a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) confirms network-reachable, low-complexity exploitation, but PR:L means it requires an authenticated low-privileged account - a meaningful barrier against anonymous mass exploitation. The scored impact is confined to subsequent systems (SC:H, with VC/VI/VA all N on the Tandoor host itself), which correctly captures SSRF: the Tandoor app is not directly compromised, but it becomes a pivot to internal services and cloud metadata. The vuln.today Decision label is 'this_month' (not act_now/emergency), aligning with the 6.3 base score. No EPSS score and no CISA KEV entry were supplied, so there is no evidence of active or widespread exploitation - exploitation status is 'no public exploit identified' in the strict KEV/POC-feed sense, HOWEVER the vendor GHSA advisory (GHSA-xq7g-9q95-vjc6) contains a complete working PoC that the reporter states was reproduced twice, so a functional proof-of-concept is public. Net: treat as a schedule-this-month patch, elevated if the Tandoor instance runs in a cloud environment with reachable instance-metadata (169.254.169.254) or sits adjacent to sensitive internal networks, since that is where SC:H becomes materially dangerous.

Exploit ScenarioDerived

An attacker with only a standard low-privileged Tandoor 'user' account crafts a malicious .pestle import file whose recipe image URL points at an internal target (e.g. http://127.0.0.1:8899/ or the cloud metadata endpoint), then POSTs it to /api/import/ with type=PESTLE. The server fetches that URL via the unhardened requests.get call and stores the fetched internal response as the recipe image, letting the attacker perform internal port/service discovery and exfiltrate image-parseable internal responses. A complete, reporter-reproduced PoC is published in the vendor's GHSA advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

Server-side request forgery in the Pestle importer of Tandoor Recipes through 2.6.15 allows an authenticated user with only the standard space 'user' role to make the server issue GET requests to arbitrary internal or external hosts by supplying a crafted image URL in a Pestle JSON import. It is a genuine but moderate-priority issue rather than a top-tier emergency: the flaw is reachable through POST /api/import/ with type=PESTLE, a default-available feature since v2.6.15, and the advisory documents a PoC with reproduced loopback fetch and storage of the internal response as a recipe image. No CISA KEV listing accompanies this CVE in the supplied data; 2.7.0 is the vendor-released fix.

RemediationAI

Upgrade to Tandoor Recipes 2.7.0, the vendor-released patch (https://github.com/TandoorRecipes/recipes/releases/tag/2.7.0); the code fix replaces the raw requests.get in cookbook/integration/pestle.py with the existing safe_request() helper from cookbook/helper/HelperFunctions.py, and the advisory recommends a CI lint rule forbidding raw outbound HTTP requests outside safe_request(). If immediate upgrade is not possible, restrict access to POST /api/import/ with type=PESTLE to trusted users or temporarily disable the Pestle import type, accepting that legitimate Pestle imports will be unavailable. As a network-layer compensating control, block server egress to loopback addresses and 169.254.169.254, noting that this may affect other importers or integrations that legitimately fetch external or local resources. The vendor advisory is https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-xq7g-9q95-vjc6.

Affected VersionsENISA

Recipes 2.0.0 <2.7.0

Affected Packages

euvd recipes fix: 2.7.0

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

CWE-918 (server-side request forgery) occurs because the Pestle import handler at cookbook/integration/pestle.py:157 fetches the attacker-controlled recipe image URL with a raw requests.get() call instead of the project's centralized safe_request() helper in cookbook/helper/HelperFunctions.py. That helper is used by other importers to enforce IP filtering, block loopback addresses, and block metadata addresses; bypassing it lets the request reach 127.0.0.1, internal-only services, and 169.254.169.254. The import endpoint is POST /api/import/ (AppImportView.post, perm CustomIsUser) and the fetched response is stored as the recipe image, so exfiltration works best for image-parseable internal responses while blind port and service discovery is possible regardless. The assessed CVSS:3.1 vector is AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N, reflecting mandatory low-privileged authentication and a scope change with high confidentiality impact but no integrity or availability impact.

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

Vendor (VulnCheck) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
vuln.today AI 7.7 HIGH

Authenticated low-priv user (PR:L) sends a network request with no victim interaction; the bug pivots requests to other internal systems (S:C) to read internal/metadata responses (C:H), with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Tandoor Recipes before 2.7.0 contains a server-side request forgery vulnerability in the Pestle importer that allows authenticated low-privileged users to force the server to issue GET requests to arbitrary internal or external hosts by crafting a malicious image URL in a Pestle JSON import file. Attackers can exploit the raw requests.get call in cookbook/integration/pestle.py, which bypasses the application's centralized requests-hardened SSRF filter, to reach internal-only endpoints, perform port/service discovery, and exfiltrate internal responses via the stored recipe image.

Threat Intelligence Overview

EPSS Score
0.4%
Top 64% exploitable
Prevalence
Low
self-hosted recipe manager, niche homelab/self-host footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2025-23211 CRITICAL POC
9.9 Jan 28

Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Rated critical seve

CVE-2026-25991 HIGH POC
7.7 Feb 13

Tandoor Recipes prior to 2.5.1 contains a blind server-side request forgery vulnerability in the Cookmate recipe import

CVE-2025-57396 MEDIUM POC
6.5 Sep 19

Tandoor Recipes 2.0.0-alpha-1, fixed in 2.0.0-alpha-2, is vulnerable to privilege escalation. Rated medium severity (CVS

CVE-2024-0403 MEDIUM POC
6.5 Mar 01

Recipes version 1.5.10 allows arbitrary HTTP requests to be made through the server. Rated medium severity (CVSS 6.5), t

CVE-2022-23071 MEDIUM POC
6.5 Jun 19

In Recipes, versions 0.9.1 through 1.2.5 are vulnerable to Server Side Request Forgery (SSRF), in the “Import Recipe” fu

CVE-2026-33152 CRITICAL
9.1 Mar 26

Tandoor Recipes versions prior to 2.6.0 allow unlimited brute-force password guessing attacks against any known username

CVE-2026-25964 MEDIUM POC
4.9 Feb 13

Path traversal in Tandoor Recipes prior to 2.5.1 allows authenticated users with import permissions to read arbitrary fi

CVE-2026-61726 HIGH
8.1 Oct 16

Broken object-level authorization in Tandoor Recipes before 2.6.12 lets an authenticated member of the same Space, holdi

CVE-2026-35488 HIGH
8.1 Apr 07

Privilege escalation in Tandoor Recipes prior to version 2.6.4 allows authenticated users with read-only shared access t

CVE-2026-35045 HIGH
8.1 Apr 06

Authenticated users can modify and expose private recipes in Tandoor Recipes through broken object-level authorization i

CVE-2026-33149 HIGH
8.1 Mar 26

Tandoor Recipes versions through 2.5.3 permit Host header injection attacks that enable invite link poisoning, allowing

CVE-2026-59970 HIGH
7.7 Oct 16

Authenticated blind server-side request forgery in Tandoor Recipes before 2.6.10 allows a user with privileges to create

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy