7.2 KiB
7.2 KiB
tags, doc-type, layer, parent
| tags | doc-type | layer | parent | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
风控事件复盘 | 2、架构/05-规范 |
|
2026-07-30 微信安全提醒事件复盘
1. 结论
现有证据无法把“安全提醒”精确归因到某一个微信内部规则,但测试记录显示最高概率触发链为:
真实创建群 → 设置群名 → 向新群发送验证消息 → 同日继续进行确认/回放/SDK重载及多轮写入准备。
本次事件不应归因于 20260729_CORE71_05_REAL_EVENT:该轮仅执行一次 get_profile 只读动作,wechat_write_calls=0,没有真实事件增量。
2. 证据时间线
| 顺序 | 测试活动 | 真实写入 | 结果/风险 |
|---|---|---|---|
| 1 | CORE71-05 事件验收 | 0 | 仅get_profile,事件差分为0;根因是Hook事件未转发,不是微信限制 |
| 2 | CORE71-47 可见群验收 | 是 | 创建群、设置群名、发送验证消息,均有Frida RPC和业务回读 |
| 3 | CORE71-47 后续准备 | 计划确认1次 | 台账明确account_restricted后立即停止,不重放、不换账号 |
| 4 | CORE71-51 FINAL | 是 | write_performed=true,真实群操作确认通过 |
| 5 | CORE71-51 UNWRAP | 是 | 首次确认出现business_readback_failed,虽停止重试,但微信写入已发生 |
| 6 | 同日SDK reload / publish / gate | 多轮 | 多次重载、Hook检查、接口确认和风险恢复准备叠加在同一设备/账号窗口 |
3. 触发风险排序
P0:高概率
- 短时间内连续进行群创建、群改名、发消息三类写动作。
- 真实写入后继续做确认、回放或恢复性测试。
- 同一微信账号承担多组CORE71测试任务,动作组合不够单一。
- 首次写入回读失败后继续进入后续测试准备,增加异常行为密度。
P1:中概率
- 多轮SDK重载、Hook重新附着和接口重试改变了运行环境特征。
- 真实群名称、验证消息带有明显测试标识,行为模式集中。
- 测试前后连续读取群、成员、消息和账号状态,探针密度偏高。
P2:待证实
- 微信内部返回的安全提醒具体码和触发时间未落盘。
- 当前没有完整的微信屏幕安全提醒截图、原始系统日志或官方回执。
- 现有
rate_limited多处来自OpenAPI示例/门禁配置,不能直接当成真实微信上游限制。
4. 已确认的非触发项
CORE71-05_REAL_EVENT:只读get_profile,无微信写调用。- Hook事件转发缺陷:导致SDK收不到真实事件,不会直接造成微信安全提醒。
- 预检失败:属于本地门禁或脚本兼容问题,本身不是微信动作。
5. 立即处置
- 当前账号进入冷却观察,不再执行真实写动作。
- 暂停创建群、改群名、批量加好友、群发、朋友圈发布和账号解封测试。
- 只允许健康、连接、Hook状态和只读资料检查。
- 同一设备窗口只绑定一个任务;禁止多个CORE任务并行。
- 任一写入回读失败,立即结束窗口,不执行重试和回放。
- 下一次写入前必须记录:安全提醒截图、微信原始回执、
trace_id、设备窗口ID和账号状态。
6. 后续恢复门槛
必须同时满足以下条件,才恢复单项写入:
- 连续观察窗口内没有新增安全提醒。
- Hook状态为attached,且
hook_available_reported=true。 - 只做一个动作、一个账号、一个设备窗口。
- 先执行
dry_run,再由人工确认一次真实写入。 - 写入后必须有四证据和业务回读。
- 真实写入后至少完成一个冷却窗口,再决定是否继续下一项。
7. 证据索引
9. 账号级操作明细登记
账号:
ACCOUNT_ID;设备:3c2d803e58f2c30a744234484c4e393e;微信版本:8.0.69。以下按已落盘证据登记,未凭空补充未记录的动作。
9.1 已确认的真实操作
- 创建群:调用
create_group,通过Frida RPC进入微信内部createchatroom场景,生成@chatroom群。 - 修改群名:调用
set_group_name,使用微信RoomSDK命令27写入群名,并轮询群表和联系人表回读。 - 发送群验证消息:向新群发送测试消息,取得真实
message_id和msg_svr_id。 - 重复确认/回放:同一测试窗口出现confirm、幂等回放和后续验证准备;虽然调用层设置了
retry_calls=0,但底层写入已发生。 - 失败后继续切换测试窗口:部分窗口出现
readback_failed或business_readback_failed,随后进入下一组CORE71任务或SDK reload准备。
9.2 已确认的异常细节
CORE71-47-VISIBLE:创建群、改名、发消息均返回verified=true,底层标记write_performed=true。CORE71-47-ASYNC:confirm一次,群名回读失败,窗口释放。CORE71-47-VALID-FRIENDS:confirm一次,底层生成群后回读失败,窗口释放。CORE71-47-NAME-READBACK:confirm一次,群名和群成员回读通过。CORE71-51-FINAL:set_group_name真实写入通过。CORE71-51-UNWRAP:第一次confirm返回business_readback_failed,回执明确写入已发生;随后停止重试。CORE71-52:第一次confirm后脚本销毁/首败停止,窗口释放。
9.3 最大可能的触发原因排序
- 同一账号短时连续创建多个群并改名:这是最强候选,涉及微信内部群聊写场景。
- 真实写入后立即发送群消息:新增群、改名、发消息形成连续行为组合。
- 写入回读失败后继续做下一轮准备:微信侧可能已接受写入,服务端却因回读失败继续产生测试状态切换。
- 多轮SDK reload、Hook attach和任务切换:增加了环境变化和探针密度。
- 测试内容高度相似:群名、消息内容、成员组合带有明显批次测试特征。
9.4 不能直接认定的部分
- 现有文件没有微信安全提醒原始截图、内部retno或触发秒级时间戳。
rate_limited出现在OpenAPI示例和门禁配置中,不能直接证明本账号当时收到上游频控。CORE71-05只读事件缺失属于Agent事件转发问题,不是账号写入行为。
10. 事件状态
| 项 | 状态 |
|---|---|
| 触发环节 | 已定位到高概率写入链 |
| 单一根因 | 待微信原始安全提醒回执确认 |
| 当前处置 | 冷却、暂停真实写入 |
| 恢复条件 | 单动作、单账号、单窗口、四证据 |
| 责任台账 | 微信风控统计与执行台账.md |