返回 Bug 清单
BUG-1386project-02高已修复security-injection

bk_bank_api DELETE 端点 from_args=True 取到 None 导致 extractor 放行

发现:2026-10-15验证:2026-10-15置信度:95%

症状

未授权 junior 用户知道 trans_id 可直接 DELETE 银行流水(无 403 拦截),绕过 require_permission('bank:write') 之外的客户级权限检查

根因

from_args=True 查 request.args.get('client_id'),但前端 apiDelete(path) 只传 path+Authorization header,不传任何 query/body 参数。extractor 返回 None 时 acl_required 放行(让业务处理 404),导致 DELETE 银行流水端点实际无 ACL 保护。

修复方案

给 acl_required 加 from_trans_id=True(类似 from_voucher_id):从 bk_bank_transactions JOIN bk_account_books 反查 client_id。两个 DELETE 端点改 from_args=True → from_trans_id=True。审计脚本从 43 个形式保护误报修正为 2 个真实条件保护,修复后 67/67 全真保护。

错误签名

DELETE /api/bk/banks/transactions/<id> 用 from_args=True 但前端 apiDelete() 不带 ?client_id= → extractor 返回 None → acl_required 放行

技术信息

来源项目

project-02

涉及文件

bk_backend/bk_acl_api.py, bk_backend/bk_bank_api.py

标签

project-02, mcp-reported, source-agent