WIP-368 · 23 写端点(11 同族)分诊三分类

依波波 07b597a8 预置判据 · 小齐 2026-09-16 12:5x
判定式(同族)⟺ (体内出现 resolve_destination) AND (requested ∈ {None, 未传})
⚠️ 「不传参」≡ 硬编码 None,不是豁免理由

一、真缺口(已修 + 复跑实测)

#端点缺陷修法实测
1admin_ops.admin_create_merchantrequested 硬编码 None ⇒ 静默落默认租户加参,requested 接上dest=1→200 落 1;dest=999→404
2admin_ops.admin_create_temple同源同上已修(同函数族)
3admin_ops.admin_delete_temple同源同上已修(同函数族)
4miniapp_workbench_redeem.redeem_arrival伪接线:取了 _ctx_dest 却零消费 ⇒ 跨目的地核销码照样锁得到、可核销查询加 (destination_id=$2 OR IS NULL) FOR UPDATE,传 _ctx_dest.destination_id语法+AST 通过,待复跑

二、语义安全(书面说明 + 登记位,共 7 个)

共同特征:不收请求侧 destination_id,但用 ctx.destination_id 做归属校验或写入落列 ⇒ 按凭证锚定,非漏接
#端点语义说明(为什么安全)
5admin_distribution.risk_rulingJOIN merchants m ON ... AND m.destination_id = $1 + ctx ⇒ 跨目的地的绑定裁决不到
6admin_distribution.admin_generate_billsSELECT 1 FROM merchants WHERE id=$1 AND destination_id=$2 + ctx ⇒ 非本目的地商户不能出账
7miniapp_pay.prepay(高敏)先查订单 destination_id,与 ctx 交叉比对,不符即拒 ⇒ 支付按订单归属锚定;不收请求侧参数反而防伪造(显式裁定)
8safety.trigger_sos(高敏 SOS)写入 sos_alerts.destination_id 落列 ⇒ 新告警有主
9safety.cancel_sos(高敏)撤销加 (destination_id=$3 OR IS NULL) ⇒ 跨目的地 SOS 撤不掉
10safety.submit_assessment(高敏)写入落 destination_id
11safety.submit_health_check(高敏)写入落 destination_id

🔴 高敏显式裁定(依判据"高敏不享默认豁免"):prepay 与 safety×4 均已接线(落列或交叉校验),

属语义安全而非豁免;理由如上。若日后发现其上下文锚定不可靠(如 admin 主 token 多 active 场景),须重新定性为真缺口。

三、未定性(BLOCKED 入下轮)

#端点情况为何本轮未改
12miniapp_workbench_redeem.redeem_scan与 redeem_arrival 同形:查询 redemption_codes WHERE code_no=$1 无目的地过滤,且函数内无 _ctx_dest 定义本轮误改过一次(传未定义变量会 NameError)⇒ 已回滚。需先补 resolve_destination 再改,避免误伤 ⇒ 入下轮

四、纪律