返回 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