CVE-2026-35489Tandoor Recipes是一个用于管理食谱和计划膳食的应用程序。在2.6.4版本之前,其POST /api/food/{id}/shopping/接口存在安全缺陷。该接口直接从请求数据中读取amount和unit参数,且未经过验证就传递给数据库操作。攻击者可利用此漏洞发送非数字amount导致服务崩溃(HTTP 500),或利用跨空间的unit ID关联数据,从而泄露不同租户的外键引用信息。
该漏洞的核心在于Tandoor Recipes后端对特定接口的数据处理逻辑不当。在受影响版本中,/api/food/{id}/shopping/端点直接使用了Django ORM的ShoppingListEntry.objects.create()方法,从request.data中获取amount和unit参数,完全绕过了标准的ShoppingListEntrySerializer验证机制。这导致了两个主要风险:首先是输入验证缺失,当amount字段接收到非数值型字符串时,系统会抛出未处理的异常,导致应用崩溃,影响可用性。其次是访问控制失效,由于未校验unit ID是否属于当前用户的Space(租户空间),攻击者可以枚举并提交属于其他租户的unit ID。这使得系统创建了跨租户的关联对象,导致外键信息泄露,破坏了多租户架构的数据隔离性。