CVE-2026-33153Tandoor Recipes是一个用于管理食谱、膳食计划和购物清单的应用程序。在2.6.0版本之前,其Recipe API端点存在一个安全隐患。该端点暴露了一个隐藏的`?debug=true`查询参数,即使Django处于生产模式(DEBUG=False),该参数也会返回正在执行的完整原始SQL查询。这些查询包含表名、列名、JOIN关系、WHERE条件(揭示访问控制逻辑)以及多租户空间ID。任何经过身份验证的用户,无论权限级别如何,都可以利用此漏洞映射整个数据库架构并逆向工程授权模型,从而导致敏感信息泄露。
该漏洞源于Tandoor Recipes在Recipe API端点实现时的安全逻辑缺陷。尽管Django框架通常在生产环境(DEBUG=False)下会抑制详细的调试信息,但受影响版本的开发人员在该特定的API端点中手动实现了一个调试功能开关。当请求中包含`?debug=true`参数时,后端代码会捕获并返回当前请求执行的原始SQL语句,而未对请求者的权限级别进行验证,也未检查全局的DEBUG配置状态。攻击者只需拥有一个低权限的普通账号,即可向该API端点发送附带调试参数的HTTP GET或POST请求。服务器响应中不仅包含预期的业务数据,还会额外输出底层的SQL查询文本。通过分析这些SQL语句,攻击者可以推断出完整的数据库表结构、字段类型、表之间的关联关系(JOIN)、关键的访问控制逻辑(WHERE子句)以及用于数据隔离的多租户ID。这些信息为后续的SQL注入或权限绕过攻击提供了重要依据。