Skip to content
Heist/ feed
Back to feed
Medium

Tandoor Recipes: ORM ORDER BY Injection via FK Traversal in Tandoor Recipes

Type: advisorySources: Official CVE List

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.

Products
recipes
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59962
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 21:57 UTC · Revision 2

Source evidence

Tandoor Recipes: ORM ORDER BY Injection via FK Traversal in Tandoor Recipes

core-cve · Original source

Published 16 Oct 2026, 16:52 UTC

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.

cve:CVE-2026-59962

recipes

Fixed versions: Not specified

Complete source record
{
  "id": "5fa9070490178d5d6cff9435125570710f9c1331869848d1023070a6e5364305",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-59962",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "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 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.",
    "evidence": "cve:CVE-2026-59962",
    "products": [
      {
        "name": {
          "value": "recipes",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-59962",
      "aliases": [
        "CVE-2026-59962"
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "scope": "UNCHANGED",
            "version": "3.1",
            "baseScore": 6.5,
            "attackVector": "NETWORK",
            "baseSeverity": "MEDIUM",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
            "integrityImpact": "NONE",
            "userInteraction": "NONE",
            "attackComplexity": "LOW",
            "availabilityImpact": "NONE",
            "privilegesRequired": "LOW",
            "confidentialityImpact": "HIGH"
          }
        }
      ],
      "affected": [
        {
          "vendor": "TandoorRecipes",
          "product": "recipes",
          "versions": [
            {
              "status": "affected",
              "version": "< 2.6.10"
            }
          ]
        }
      ],
      "modified": "2026-10-28T18:03:14.314Z",
      "provider": "cve",
      "references": [
        "https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-4x57-2q4q-xwpp",
        "https://github.com/TandoorRecipes/recipes/commit/322696f618997e98f2d4c15ec64b9480735589f0",
        "https://github.com/TandoorRecipes/recipes/commit/382a976cc79635edc30aef84cb2b2b72eb8afd3c",
        "https://github.com/TandoorRecipes/recipes/commit/82fd4e00f1387a1c466489989f2e94487149f7f4",
        "https://github.com/TandoorRecipes/recipes/releases/tag/2.6.10"
      ],
      "provider_metadata": {
        "adp": [
          {
            "title": "CISA ADP Vulnrichment",
            "metrics": [
              {
                "other": {
                  "type": "ssvc",
                  "content": {
                    "id": "CVE-2026-59962",
                    "role": "CISA Coordinator",
                    "options": [
                      {
                        "Exploitation": "poc"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "version": "2.0.3",
                    "timestamp": "2026-10-28T18:03:06.140303Z"
                  }
                }
              }
            ],
            "references": [
              {
                "url": "https://github.com/TandoorRecipes/recipes/security/advisories/GHSA-4x57-2q4q-xwpp",
                "tags": [
                  "exploit"
                ]
              }
            ],
            "providerMetadata": {
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP",
              "dateUpdated": "2026-10-28T18:03:14.314Z"
            }
          }
        ],
        "cna": {
          "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
          "shortName": "GitHub_M",
          "dateUpdated": "2026-10-16T16:52:49.172Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59962",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 470551,
  "published_at": "2026-10-16T16:52:49.172+00:00"
}