---
id: CVE-2026-59962
title: 'Tandoor Recipes: ORM ORDER BY Injection via FK Traversal in Tandoor Recipes'
summary: >-
  Tandoor Recipes is an application for managing recipes, planning meals, and
  building shopping lists. Prior to 2.6.10, passes unvalidated sort_order and
  order_field strings into Django ORM order_by() calls when an authenticated
  user suppl…
severity: medium
cvss: 6.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N'
cvssSource: cna
cwe:
  - CWE-943
vendor: TandoorRecipes
product: recipes
affected:
  - recipes < 2.6.10
published: '2026-10-16'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T16:52:49.172Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-59962'
references:
  - url: >-
      https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-4x57-2q4q-xwpp
    label: >-
      https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-4x57-2q4q-xwpp
  - url: >-
      https://github.com/TandoorRecipes/recipes/commit/322696f618997e98f2d4c15ec64b9480735589f0
    label: >-
      https://github.com/TandoorRecipes/recipes/commit/322696f618997e98f2d4c15ec64b9480735589f0
  - url: >-
      https://github.com/TandoorRecipes/recipes/commit/382a976cc79635edc30aef84cb2b2b72eb8afd3c
    label: >-
      https://github.com/TandoorRecipes/recipes/commit/382a976cc79635edc30aef84cb2b2b72eb8afd3c
  - url: >-
      https://github.com/TandoorRecipes/recipes/commit/82fd4e00f1387a1c466489989f2e94487149f7f4
    label: >-
      https://github.com/TandoorRecipes/recipes/commit/82fd4e00f1387a1c466489989f2e94487149f7f4
  - url: 'https://github.com/TandoorRecipes/recipes/releases/tag/2.6.10'
    label: 'https://github.com/TandoorRecipes/recipes/releases/tag/2.6.10'
tags:
  - cve.org
ingestedAt: '2026-10-16T17:24:46.896Z'
---

## Overview

Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Prior to 2.6.10, passes unvalidated sort_order and order_field strings into Django ORM order_by() calls when an authenticated user supplies foreign-key traversal paths in recipe search, RecipeBook, or stored CustomFilter ordering values. Request processing uses _finalize_ordering and order_by through 8080/api/recipe/ and 8080/api/recipe-book/. The attack works because Django interprets double-underscore ordering fields as related-table traversal, and observable result ordering leaks values from related User fields. This can infer password hashes, email addresses, administrator status, and other related database values. This issue is fixed in version 2.6.10.

## Affected

- `recipes < 2.6.10`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
