漏洞概述 这是一个 BFLA (Broken Function Level Authorization) 漏洞。在 应用中, 和 使用了 作为权限类。然而, 方法对所有 HTTP 方法(包括 , , )均返回 ,且未检查 。这导致任何在 RecipeBook 共享列表中的用户(即使是只读共享用户)都可以删除或覆盖他们不拥有的 RecipeBook 及其条目。 影响范围 受影响文件: (lines 1411-1441) (lines 311-323) 受影响版本: Tandoor Recipes (tested on commit in scope) 受影响的端点: (删除 RecipeBook 及其所有条目) (覆盖名称、描述和共享列表) (从他人书中删除条目) (覆盖条目字段) 修复方案 1. 创建只读权限类: 创建一个类似于 的 类,限制仅允许 , , 方法。 2. 更新 ViewSets: 将 ViewSets 的 更新为使用新的只读类: 3. 或者: 显式重写 和 方法以检查所有权。 概念验证 (Proof of Concept) 前提条件: 用户 B 在 RecipeBook ID 15 的共享列表中。 步骤 1 — 作为共享用户 PATCH 该书: 步骤 2 — 作为共享用户 DELETE 该书: 确认:** 具有只读共享访问权限的用户成功删除并修改了他们不拥有的 RecipeBook。