返回 Bug 清单
BUG-1385project-02中已修复security-injection
ACL 缺失时未授权用户可通过 403 vs 404 区分资源存在性
发现:2026-10-15验证:2026-10-15置信度:90%
症状
未授权 junior 用户探测 voucher_id,通过响应码 403(有ACL)/404(无ACL但不存在)/200(无ACL且存在) 区分资源状态,形成资源枚举漏洞
根因
业务端点先 execute_query 查资源 → 不存在返回 404,存在才继续后续逻辑。无 @acl_required 时攻击者可枚举资源 ID(试 voucher_id=1,2,3...),404 表示不存在,业务层错误表示存在。
修复方案
@acl_required 必须放在业务查询之前装饰器链最外层。已部署的 35 端点装饰器顺序: @app.route → @require_auth → @require_permission → @acl_required → def — 正确。未来端点必须保持此顺序。
错误签名
删 @acl_required 后 test_voucher_get 预期 403 却返回 404;业务端点先查资源存在性再鉴权技术信息
来源项目
project-02
涉及文件
bk_backend/bk_vouchers_api.py, bk_backend/bk_acl_api.py
标签
project-02, mcp-reported, source-agent