背景(PR #113 CR round-3 medium · 防御纵深)
is_protective_signature(model/orders.py)用「guard- 前缀 + 保护性 tag」双因子判定保护性出场,但:
- 函数签名收
side 却忽略(注释"方向无关");
ast_audit.py 未拦截策略代码设置 client_order_id="guard-..." 或硬编码保护 tag。
策略源码理论上可合法构造 client_order_id="guard-fake" + tag="stop_loss" 让 is_protective_order 返 True,从而跳过 notional 上限 + 风控熔断(豁免路径)。
现状(已部分缓解)
期望(纵深防御)
框架内部记录 PositionGuard 真正注册的 guard 单 id(或在出场路径校验该 id 确由框架产生),让"伪造 guard 前缀"无法借豁免跳过 notional/熔断。或在 ast_audit 加规则拦截策略代码出现 guard- 前缀 / 硬编码保护 tag。
相关:PR #113、#117(回测保护单)、#114(并发保证金)
背景(PR #113 CR round-3 medium · 防御纵深)
is_protective_signature(model/orders.py)用「guard-前缀 + 保护性 tag」双因子判定保护性出场,但:side却忽略(注释"方向无关");ast_audit.py未拦截策略代码设置client_order_id="guard-..."或硬编码保护 tag。策略源码理论上可合法构造
client_order_id="guard-fake"+tag="stop_loss"让is_protective_order返 True,从而跳过 notional 上限 + 风控熔断(豁免路径)。现状(已部分缓解)
b075589):伪造超量 guard BUY 被钳到全平、不翻仓、不跳过 IM——最坏后果(翻仓/凭空开仓)已堵。期望(纵深防御)
框架内部记录 PositionGuard 真正注册的 guard 单 id(或在出场路径校验该 id 确由框架产生),让"伪造 guard 前缀"无法借豁免跳过 notional/熔断。或在 ast_audit 加规则拦截策略代码出现
guard-前缀 / 硬编码保护 tag。相关:PR #113、#117(回测保护单)、#114(并发保证金)