TaiChu 端云一体 AI Agent 威胁分析报告
(B' 4b 大改 · 含 PC SubAgent 增量 · Top-6 + 5 新 SC-GAP + 5 新 ORP)
修订版 B' · 云侧为主
白盒源码驱动 · 范围重心 services/rust/taichu-service(A1 MainAgent / "TaiChu Cloud")· 分析日期 2026-06-14 → 2026-06-16 · 数据治理 [R]
范围纠偏:本版纠正 B 版重大范围错误(B 把 services/ 云侧划为"非主范围"、把 core/builtintools 库当部署态 Agent)。云侧 = 主范围(安南确认)。全文废除 exec_os_api(已被 FunctionExec 吸收 tools.rs:318-319),Sink 一律用真实工具名。
§1 执行摘要
18.00
最高 RiskScore(AP-05 channel_seed)
14.50
AP-06 PC SubAgent C2(三角通道)
最高风险一句话:AP-05 channel_seed 供应链投毒(18.00) 一次投毒即令运营方全员 Agent 启动即被劫持(force-overwrite 全员 IDENTITY/AGENTS,service.rs:357-378)——但 scope=extended-hostile,须先取得部署侧写权限,高危但高门槛。真正最高可达、无前提的实战头号链是 AP-01 PCS 个人数据投毒→外发(13.60,PUB1.2+Lossless),B 版云侧漏掉的核心注入面。
4b 大改新增 AP-06 · PC 端三角通道 C2(RiskScore=14.50,scope=native) —— 三通道 web_fetch+Cron+Skill file 在 PC 端形成 C2 通道(StrategicIntent-C2,ORP-33),任意端侧指令触发恶意 hijack 并反向欺骗云端主 Agent。
AP-06 PC SubAgent C2 通道劫持(14.50):三角通道(web_fetch + Cron + Skill 文件)在 PC 端建立持久化 C2 + 反向欺骗云侧,scope=native 无前提头号链之一(StrategicIntent-C2,ORP-33)。
§1 核心风险三维表
| 维度 | 评估 | 关键证据(file:line) |
| 注入可达性 | 高 | 最高可达无前提注入面 = PCS 个人数据源(PUB1.2 + Lossless(0)):外部可投递 + raw 直通无衰减 tools.rs:112 / definition.rs:250-253 |
| 危害上限 | Operator × InfraCompromise(全员) | AP-05 全员身份被供应链篡改 service.rs:357-378;次高 AP-04 端 OS 全集无沙箱 exec_cli.rs:107-235 |
| 防御覆盖 | 内容/动作语义级有效 SC = 0 | 最大盲区 SC-GAP-6(无 Output/注入检测)+ SC-GAP-1(content 零校验回灌 relay.rs:147-151) |
| C2 通道(2026-06-16 增量) | 战略意图 C2 / 受害者 PC 端 OS 全集 | AP-06 三角通道 cron.md:113-114 + skills_page.dart:194-249 |
危害分饱和说明:5 条 AP 危害分均触 min(10) 截顶(scoring.py 结构特性)。真实区分度由 harm_level 体现:AP-05(5,全员 InfraCompromise) > AP-04(4,端 OS) > AP-02/03(3) > AP-01(2,单用户 PII)。不以"全 10.0"误导。+ AP-06(harm_level=4, 端 OS + 跨设备反向欺骗, 截顶 10)
三角通道角色分工(按用户实战反馈):Cron = 执行层(5 秒级定时触发,激活 payload);MEMORY.md = 投毒层(重要目标)(CrossSession 永久驻留,不在 channel_seed 覆盖名单,每 loop 进 system context_files);Skill file = 注入层(每 loop 进 <local_skills>,持续劫持)。C2 互证链:Cron 触发 → 改 MEMORY.md → SKILL.md 持续注入 → 任意 User_Instruct 触发 GoalHijack → 反向欺骗云端。实证:prompt_builder.rs:68-77 + runtime.rs:155-167 + system_prompt.rs:99-129 三方源码确认 5 文件每 loop 进 system(修正 B' §A.3 旧结论)。
§2 被测对象全景(端云架构 · 5 Agent · 含 PC SubAgent 增量)
| # | Agent | 位置 | 角色 | scope |
| A1 | MainAgent / TaiChu Cloud | 云 taichu-service | 主推理,端云编排(本报告重心) | native(主) |
| A2 | RemoteSubAgent | 云 cloud-collab-subagent | 跨设备/远程委托子 Agent | extended-clean |
| A3 | AppController(VLM GUI) | 端 App + 外部 VLM 端点 | 视觉操控代理(ORP-41 NestedVisualAgent) | native |
| A4 | 端侧执行体 flutteragui | clients/flutteragui | 执行远程 builtin + 设备动作(远程工具落地点) | native(端) |
| A5 | PC SubAgent(端) | PC 端 FlutterGUI + OS scheduler | profile(coder/researcher/app_controller_agent/gui_agent) × host backend(CronHostBackend/FunctionExec/RemoteToolClient) | native(端) |
主 Agent 推理在云侧,多数文件/设备工具经
X-Device-Id 路由
远程下发端侧执行。端侧承载真机敏感数据(短信/通讯录/支付/位置)。AgentProfile L0-L6 详见 →
threat_taichu_bp_profile.htmlA5 PC SubAgent 是云端 SubAgent profile(coder/researcher/app_controller_agent/gui_agent)的端侧实例化,承载 C2 三角通道(web_fetch + Cron 5s + Skill 文件),详见 §3.5。
§3.5 PC SubAgent 端侧画像 + 三角通道 C2(2026-06-16 增量)
§3.5.1 PC SubAgent 拓扑(三层模型)
Cloud MainAgent (services/rust/taichu-service)
│ run_subagent(target_id=<pc>)
▼
PC SubAgent Profile (core/subagent/src/profiles/registry.rs)
├─ gui_agent (PROTECTED)
├─ app_controller_agent (PROTECTED)
├─ coder (overridable)
└─ researcher (overridable)
│ 实例化
▼
FlutterGUI + 端侧 host backend
├─ CronHostBackend (core/builtintools/src/cron/host.rs:9)
├─ FunctionExecBackend (tools.rs:318)
└─ RemoteToolClient (remote_builtin_tool.rs:198-223)
§3.5.2 三角通道契约表
| 通道 | 真实代码位置 | Sink 工具 | 关键约束 | file:line |
| web_fetch | core/builtintools/src/web/fetch.rs | web_fetch | 双执行地(端远程下发 / 云 VFS fallback)+ 默认拦截 private host | fetch.rs:69/126/543 |
| Cron | core/builtintools/src/cron/{mod.rs, host.rs}(独立 crate,非 a_system 桶,Q-V14 修订) | cron | 端侧 host backend;最低 5 秒间隔;payload 完全可控;HAG/HiScenario 锁屏后仍触发 | mod.rs:40/76/93;cron.md:113-114 |
| Skill 文件 | core/builtintools/src/skill/{mod.rs, load_skill.rs} | load_skill(只读)+ remote_builtin.write/edit | load_skill 只读≠PC 不能创建 Skill(Q-V15 修正:UI/REST/直写三路径) | skill/mod.rs:7-9 + skills_page.dart:194-249 + taichu_api_service.dart:1814 |
§3.5.3 PC 端 Skill 创建三条独立路径(Q-V15 修正)
| 路径 | 入口 | 代码位置 | accessibility |
| UI 自动同步 | Flutter skills_page.dart _writeMetaOnlySkillMds() 自动为云端 inWorkspace Skill 写本地 meta-only SKILL.md(runsOn/triggers/whenToUse 字段直接来自云端返回) | skills_page.dart:194-249 | PUB1.0 |
| REST API 安装 | taichu_api_service.dart installCatalogSkill(contentId) POST /config/skills/catalog/install | taichu_api_service.dart:1814 + 1758-1822 | PUB1.0 |
| 本地直写 | TaichuAppDataLayout.skillsRoot(workspaceDir, userId) 路径 + File.writeAsStringSync() 写 <workspace>/<userId>/meta_data/skills/<name>/SKILL.md | skills_page.dart:47/328-329 | PUB1.0 |
修订结论:原 IS-3 load_skill accessibility=ITM0.6 暗含"LLM 不能创建 Skill"。实战证实 PC 端三写路径(UI/REST/direct-write)均绕过 load_sill → accessibility=PUB1.0。ORP-45/46 提案见 §7。
§3.5.4 ★ 三角通道角色分工(用户实战反馈)
Cron = 执行层(5s 调度,激活 payload)· MEMORY.md = 投毒层(CrossSession 永久驻留,重要目标,不在 channel_seed 覆盖名单,service.rs:316-317)· Skill file = 注入层(每 loop 进 <local_skills>)。
C2 互证链:Cron 触发 → 改 MEMORY.md → SKILL.md 持续注入 → 任意 User_Instruct 触发 GoalHijack → 反向欺骗云端主 Agent。
实证:prompt_builder.rs:68-77 + runtime.rs:155-167 + system_prompt.rs:99-129 三方源码确认 MEMORY.md 等 5 文件每 loop 进 system(修正 B' §A.3 旧结论)。
§3.5.5 PC 端新增 SC-GAP(5 项)
| SC-GAP ID | 描述 | ORP 候选 | file:line |
| SC-GAP-CRON-PAYLOAD-SEMANTIC | cron payload.query/instruction 无语义审计(端侧预校验仅结构) | ORP-43 | cron/mod.rs:57-77 + cron.md:100 |
| SC-GAP-SKILL-MD-UNSIGNED | load_skill 加载 SKILL.md 零完整性校验 | ORP-44 | load_skill.rs:138-148 |
| SC-GAP-SUBAGENT-WORKSPACE-OVERRIDE | coder/researcher profile 可被 workspace AGENT.md 覆盖 | — | registry.rs:13-16 + :51 |
| SC-GAP-SKILL-META-MARKER-FORGE | PC 端 meta-only SKILL.md 的 runsOn/triggers/whenToUse 字段直接来自云端返回,可 forge | ORP-45 | skills_page.dart:229-238 |
| SC-GAP-SKILL-CATALOG-INSTALL-UNAUTH | installCatalogSkill REST API 不验证 contentId 来源真实性 | ORP-46 | taichu_api_service.dart:1814 |
完整 PC SubAgent L0-L6 画像 + 注入面 + ORP 衔接见独立源文件 05_PC_SubAgent_Profile.md(§A.1~§A.7)。
§4 Top-6 高风险攻击路径(含 AP-06 PC SubAgent 增量)
排序口径:RiskScore 降序,但 AP-05/AP-03 标 extended-hostile 并列前提(部署侧/内网位置),与无前提 native 链区分。可达性闸:本套 6 条注入分全部 >0,无 0 分项,均可达;AP-06 = native 链第二高可达实战头号链(仅次于 AP-01 的 3.60)。点击卡片展开。
#118.00
AP-05 · channel_seed 供应链 → force-overwrite 全员身份文件
extended-hostile · 须部署侧写权限
PoisonEntry:channel_seed 源目录(SSP6 供应链注入面,accessibility=SUP1.5)
写入恶意 IDENTITY/AGENTS 模板;证据 service.rs:357-378(force-overwrite)
↓ Source:M6/M7 base identity + Context Files(System §1/§2,system_prompt.rs:79 / :83-96)
Perception-Fidelity-Lossless(0):system prompt 原文 = 最高权威采信
→ Sink₀:channel_seed force-overwrite — Sink-Persist × SinkIntent-ConfigTamper × AF-1(IDENTITY/AGENTS)
d_Sink₀=0.70(force-overwrite 无完整性校验)
→ Harm:HarmVictim-Operator × HarmLossType-InfraCompromise | TamperEvent | 全员身份文件
strategic_intent=StrategicIntent-Persistence — 全员 Agent 启动即被劫持,基础设施沦陷
注入分 5.00(1.5[SUP]×1.0[T-BROAD]×0.70 ×5,顶格) + 危害分 10.00(5×3.0[REMOTE]×0.700 ×10,截顶;harm_level=5) + Novelty 3.0(Breakthrough 2+Rarity 1) = Total 18.00
SC 交叉:SC-GAP-6 system 内容无注入检测 · SC-GAP-mTLS 无完整性签名校验。force-overwrite 无校验,无需绕过直接生效。AF-1 持有 seed 则永久驻留。
防御建议:① channel_seed 源目录加完整性签名(SLSA/sigstore)+ 部署侧只读挂载;② force-overwrite 前校验模板来源签名(service.rs:357)。
#214.60
AP-03 · X-Auth-User-Id 伪造 → 接管 agent → 跨用户/跨设备横向
extended-hostile · 须内网绕网关位置
PoisonEntry:SSE 端 tool-result content(S2,relay.rs:147)— 经 X-Auth-User-Id 伪造接管后回灌
accessibility=AUTH0.8~ITM0.6(须绕网关直达 service 端口伪造头)
↓ Source:M12 history.toolResult;Perception-Fidelity-Lossless(0)
→ Sink₀:伪造 X-Auth-User-Id 接管 — Sink-StateChange × SinkIntent-IdentityForge × AF-CONTEXT
证据 auth.rs:137-146("Trust it when present");d_Sink₀=0.50
→ Sink₁:run_subagent 跨设备派发 — Sink-AgentDelegate × SinkIntent-PrivEsc
证据 run_subagent.rs:42-55;SC-9 仅约束 child tools⊆target(:172-176);d_Sink₁=0.80
→ Harm:HarmVictim-User(多受害者)+ ThirdParty × HarmLossType-Abuse | AbuseEvent | 跨用户隔离突破
strategic_intent=StrategicIntent-LateralMovement
注入分 1.60(0.8[AUTH]×0.8[T-SPECIFIC]×0.50 ×5) + 危害分 10.00(3×2.0[SHARED]×0.400 ×10,截顶) + Novelty 3.0(2+1) = Total 14.60
SC 交叉:SC-GAP-2 X-Auth 无条件信任·可绕过(auth.rs:137-146)· SC-GAP-mTLS 内部无 mTLS · SC-GAP-1 content 零校验。唯一身份层跨用户逃逸路径。
防御建议:① service 端口对内部调用也强制 mTLS+JWT 验签,禁止裸信任 X-Auth-User-Id(auth.rs:139);② run_subagent target_id 加跨用户授权校验。
#313.60
AP-01 · PCS 个人数据投毒 → 外发泄露(头号实战链)
native · 无前提 · 最高可达
PoisonEntry:PCS 个人数据源(S1)— 攻击者发恶意名片/日历邀请/邮件附件落端侧个人库
accessibility=PUB1.2(陌生人可投递);证据 spec tools.rs:112
↓ Source:M12 history.toolResult(PCS 返回回灌)
Perception-Fidelity-Lossless(0):raw 直通无 sanitize(definition.rs:250-253)
→ Sink₀:PersonalContextSearch 读个人数据 — Sink-InfoRead × SinkIntent-DataExfil × PII/通信
d_Sink₀=0.90(无参数校验深度 validation.rs:42-87)
→ Sink₁:web_fetch(K10)/ WebSearch(K9)外发 — Sink-NetworkSend × SinkIntent-DataExfil
证据 remote_builtin_tool.rs:97 / tools.rs:93;d_Sink₁=0.80
→ Harm:HarmVictim-User × HarmLossType-DataLeak | ExfilEvent | 联系人/日程永久泄露至攻击者
strategic_intent=StrategicIntent-Exfiltration
注入分 3.60(1.2[PUB]×1.0[T-BROAD]×0.60 ×5,native 链最高) + 危害分 10.00(2×1.0[SINGLE]×0.720 ×10,截顶;harm_level=2 单用户 PII) + Novelty 0.0 = Total 13.60
SC 交叉:SC-GAP-8新增·PCS 投递无校验 · SC-GAP-1 · SC-GAP-6 无 Output 侧。三 Gap 均"未覆盖",无需绕过直接穿过。WebSearch query 不受 url_guard 管辖(tools.rs:93)。
防御建议:① PCS 个人库对外部投递内容做来源真实性把关(标记不可信条目);② Output 侧出站 URL/query 加 PII 外带检测。
#412.60
AP-02 · SSE/relay 注入 → 写 SKILL.md → load_skill 持久劫持
native · 二阶闭环 · 永久驻留
PoisonEntry:SSE 端 tool-result content(S2,relay.rs:147-151 无校验)/ relay SubAgent(S3,source_runner.rs:202)
accessibility=AUTH0.8~ITM0.6
↓ Source:M12 history.toolResult(回灌 relay.rs:147→pending.rs:77-83);Lossless(0)
→ Sink₀:write/edit 写 meta_data/skills/*/SKILL.md — Sink-Persist × SinkIntent-ConfigTamper × AF-3
d_Sink₀=0.70(metadata_root 可写 remote_builtin_tool.rs:681-719);永久驻留(不在 seed 覆盖名单 service.rs:317)
→ Sink₁:load_skill 零校验加载 — Sink-Dependency × SinkIntent-ConfigTamper × AF-3;d_Sink₁=1.00
→ Harm:HarmVictim-Operator × HarmLossType-InfraCompromise | TamperEvent | SKILL.md 永久后门
strategic_intent=StrategicIntent-Persistence
注入分 1.60(0.8[AUTH]×1.0[T-BROAD]×0.40 ×5) + 危害分 10.00(3×3.0[REMOTE]×0.700 ×10,截顶) + Novelty 1.0(Breakthrough 1) = Total 12.60
SC 交叉:SC-GAP-1核心·content 零校验回灌 · SC-GAP-6 · SC-GAP-3 write 路径无下游守卫。metadata_root 可写放大(runtime.rs:664);load_skill 完全无校验。AF-3 永久驻留。
防御建议:① load_skill 加载前校验 SKILL.md 完整性签名(load_skill.rs:138-148);② tool-result content 回灌前做来源/内容校验(堵 SC-GAP-1)。
#510.60
AP-04 · web_fetch 注入 → exec_cli/FunctionExec → 端 OS 能力全集
native · 无沙箱端 OS · Wrapped 拉低注入分
PoisonEntry:web_fetch 目标 URL(S6)— 攻击者全控钓鱼站/恶意网页正文
accessibility=PUB1.2;Perception-Fidelity-Wrapped(-5)(HTML→文本封装有损)
↓ Source:M12 history.toolResult(web_fetch 返回回灌)
→ Sink₀:FunctionExec(K1)/ exec_cli(K2)无沙箱 — Sink-CodeExec/Sink-SystemExec × SinkIntent-ActionHarm
证据 FunctionExec 吸收 exec_os_api(tools.rs:318-319);exec_cli 无白名单/seccomp(exec_cli.rs:107-235);d_Sink₀=0.60
→ Harm:HarmVictim-User × HarmLossType-Abuse | AbuseEvent | 端 OS 滥用(发短信/读通讯录/改系统设置)
strategic_intent=StrategicIntent-Impact
注入分 0.60(1.2[PUB]×1.0[T-BROAD]×0.10[含 fidelity -5] ×5) + 危害分 10.00(4×1.0[SINGLE]×0.600 ×10,截顶;harm_level=4 端 OS 全集) + Novelty 0.0(Breakthrough 1+Rarity -1) = Total 10.60
注入分偏低主因 = fidelity=Wrapped(-5),web_fetch 引入路径有损。注入分 0.60 > 0,可达,非不可达闸。若改用 PCS/SSE(Lossless)作入口注入分可显著抬升(因 Sink 链不同记为关联入口不合并)。B 旧 AP 致命硬伤即建在已删除的 exec_os_api 上,本 AP 是纠偏核心标的。
SC 交叉:SC-GAP-6 · SC-GAP-3 exec_cli args 无值域守卫 · SC-GAP-4 未知工具默认放行。约束仅 prompt 软文字,Rust 层无沙箱,软约束可诱导绕过。
防御建议:① exec_cli/FunctionExec 加 Rust 层沙箱(seccomp/容器隔离)+ 命令白名单;② web_fetch 来源降信任加权。
#314.50
AP-06 · PC SubAgent 三角通道 C2(web_fetch+Cron+Skill 文件)
native · StrategicIntent-C2
PoisonEntry:PC 端 Skill 三写路径(PUB1.0,Q-V15 修正)— UI 自动同步 / REST API / 本地直写
accessibility=PUB1.0(skills_page.dart:194-249 + taichu_api_service.dart:1814)
↓ Source:context_files 5 文件(MEMORY.md 投毒层,prompt_builder.rs:68-77)+ (system_prompt.rs:99-129)
Perception-Fidelity-Lossless(0):MEMORY.md / SKILL.md 原结构保留
→ Sink₀:Cron 5s 调度(Sink-CodeExec × SinkIntent-C2 × Affected-PC session 调度队列,cron/host.rs:9 端侧 host backend)
cron.md:113-114 锁屏/进程死后仍触发;d_Sink₀=0.70
→ Sink₁:MEMORY.md 改写(Sink-Persist × SinkIntent-MemoryPoison × AF-CONTEXT,runtime.rs:161 + context_files 每 loop 进 system)
不在 channel_seed 覆盖名单 → CrossSession 永久驻留;d_Sink₁=0.80
→ Sink₂:web_fetch PUB1.2 外发(Sink-NetworkSend × SinkIntent-DataExfil)
fetch.rs:69/126/543;d_Sink₂=0.80
→ Harm:HarmVictim-User+Operator × HarmLossType-Abuse | AbuseEvent | PC 端 OS 全集 + 跨设备反向欺骗
strategic_intent=StrategicIntent-C2 — 持久化 C2 闭环,反向欺骗云端主 Agent(ORP-33)
注入分 3.40(1.0[PUB]×1.0[T-BROAD]×0.68 ×5,native 链第二高) + 危害分 10.00(4[harm_level]×1.0[SINGLE]×0.625 ×10,截顶;harm_level=4 端 OS 全集 + 跨设备) + Novelty 1.0(Breakthrough 1,C2 通道工程实例化) = Total 14.50
SC 交叉:
SC-GAP-CRON-PAYLOAD-SEMANTIC cron payload 语义无审计 ·
SC-GAP-SKILL-MD-UNSIGNED load_skill 零签名 ·
SC-GAP-SUBAGENT-WORKSPACE-OVERRIDE coder/researcher 可覆盖 ·
SC-GAP-SKILL-META-MARKER-FORGE 三字段 forge ·
SC-GAP-SKILL-CATALOG-INSTALL-UNAUTH installCatalogSkill 无验签
防御建议:①ORP-44 SKILL.md Ed25519 签名校验(堵 SC-GAP-SKILL-MD-UNSIGNED);②ORP-45 PC 端 meta-only SKILL.md 写入前审计;③ORP-46 catalog 安装鉴权(白名单 + 签名 + UI 确认);④新增 ORP-47 MEMORY.md 投毒层签名校验(不在 channel_seed 覆盖名单 → CrossSession 永久驻留是首要威胁);⑤ORP-43 cron payload 语义审计。
§6 安全缺口汇总(SC-GAP · 13 项 = 8 旧 + 5 新增(PC 端增量))
| SC-GAP ID | 类型 | 描述 | 关联 AP | 依据 file:line |
| SC-GAP-1 ★ | 未覆盖 | 端返回 tool-result content 零校验直入主 Agent 上下文 | AP-02/03/01 | relay.rs:147-151 |
| SC-GAP-6 | 未覆盖 | 无任何 Output 侧/注入检测/内容审查检查器(全 Input rule-based 零 model-based) | AP-01/02/04/05 | service/builtintools/agent-loop 全域 |
| SC-GAP-4 | 未覆盖 | ToolDomains 未知工具默认放行(白名单退化为黑名单) | AP-04 | tool_domains.rs:160 |
| SC-GAP-3 | 未覆盖 | validate_tool_call 仅 required 存在性校验(不验类型/枚举/路径/值域) | AP-02/04 | validation.rs:42-87 |
| SC-GAP-8 ★新增 | 未覆盖 | PCS 个人数据源端侧无投递校验(污染数据 Lossless 进感知链) | AP-01 | tools.rs:112 / definition.rs:250-253 |
| SC-GAP-mTLS | 未覆盖 | 全仓无证书钉扎/mTLS,内部 HTTP MITM 面 | AP-03/05 | service-routing/src/lib.rs:33 |
| SC-GAP-2 ★ | 可绕过 | Gateway 注入头 X-Auth-User-Id 被无条件信任(带非空即采信跳过 JWT) | AP-03 | auth.rs:137-146 |
| SC-GAP-5 | 可绕过 | url_guard 可被 allow_private_hosts 关闭 + DNS rebinding TOCTOU | AP-01 | url_guard.rs:37-39 |
| SC-GAP-7 | 可绕过 | AdminAuth 非常量时间比较(时序侧信道,低危) | — | auth.rs:188 |
| SC-GAP-CRON-PAYLOAD-SEMANTIC ★新增 | 未覆盖 | cron payload.query/instruction 无语义审计(端侧预校验仅结构) | AP-06 | cron/mod.rs:57-77 + cron.md:100 |
| SC-GAP-SKILL-MD-UNSIGNED ★新增 | 未覆盖 | load_skill 加载 SKILL.md 零完整性校验 | AP-06 | load_skill.rs:138-148 |
| SC-GAP-SUBAGENT-WORKSPACE-OVERRIDE ★新增 | 可绕过 | agent_instances/<persona_id>/meta_data/subagents/<id>/AGENT.md 可被远程 write 改写 | AP-06 | registry.rs:51 + remote_builtin write |
| SC-GAP-SKILL-META-MARKER-FORGE ★新增 | 未覆盖 | runsOn/triggers/whenToUse 三字段直接来自云端返回可 forge | AP-06 | skills_page.dart:229-238 |
| SC-GAP-SKILL-CATALOG-INSTALL-UNAUTH ★新增 | 未覆盖 | installCatalogSkill REST API 不验证 contentId 来源真实性 | AP-06 | taichu_api_service.dart:1814 |
§7 Ontology 修订提案(ORP,已落盘 10 = 5 旧 + 5 新增 PC 端)
| ORP ID | 类型 | 标题 | 关联依据 |
| ORP-40 | new_tag_value | InjChannel-VisualPerception(VLM 视觉感知独立注入模态,绕过 4 文本通道) | S10 app_controller remote.rs:173,500 |
| ORP-41 | new_entity | NestedVisualAgent(嵌套自治视觉操控代理 A3) | app_controller mode=gui remote.rs:500-510 |
| ORP-42 | extension | Agent 实体增加 device_type + host_backend 二维属性(PC SubAgent 实体化) | ontology/ORP-42_pc_subagent_profile_entity.md |
| ORP-43 | new SC | SC-RULE-CRON-PAYLOAD-SEMANTIC-AUDIT(cron payload 黑名单 + LLM 语义评估) | ontology/ORP-43_sc_rule_cron_payload_semantic_audit.md |
| ORP-44 | new SC | SC-RULE-SKILL-MD-SIGNATURE(SKILL.md Ed25519 签名校验) | ontology/ORP-44_sc_rule_skill_md_signature.md |
| ORP-45 | new SC | SC-RULE-SKILL-META-MARKER-AUDIT(PC 端 meta-only SKILL.md 写入前审计) | ontology/ORP-45_sc_rule_skill_meta_marker_audit.md |
| ORP-46 | new SC | SC-RULE-SKILL-CATALOG-INSTALL-AUTH(catalog 安装白名单 + 签名 + UI 确认 + 频次限制) | ontology/ORP-46_sc_rule_skill_catalog_install_auth.md |
视觉链(S10/A3)本波列入 Source 全集但 Top-6 未直接展开(留 A3 深挖),故不新增报告级 AP。
建议新增 ORP-47:MEMORY.md 投毒层签名校验(基于 04 §3.5.2b 用户实战反馈,CrossSession 永久驻留是首要威胁)。
§9 人工审核质疑记录
报告默认 DRAFT,未经人工逐条 sign-off 不得标 PUBLISHED。审核维度:充分 / 严谨 / 合理 / 公平。初始为空,待人工审核填入(详见 markdown 报告 §9 摘要表 + 逐条附录模板)。
§9 人工审核质疑记录(Verifier 统一审核 · 报告+AgentProfile+SecurityProfile · DRAFT)
独立 Verifier 两轮:①分析+报告 ②补审两交付页。范式=合规红线R1-R9 + 审美四维(充分/严谨/合理/公平),产{问题+质疑+方案},裁决待安南。
§9.0 合规红线核对(R1-R9 · 全 PASS)
| 红线 | 结果 | 证据 |
| R1 总体图先行 | ✅ PASS | 项目结构图+部署位置图(端云/4Agent)齐 |
| R2 属性级核验 | ✅ PASS | L0-L6 到属性级(L1 13模块/L2 20工具/L4 9SC) |
| R3 L1 三专项齐 | ✅ PASS | 配置逐项/提示词模板13模块/记忆分级+路径隔离 |
| R4 工具三方映射 | ✅ PASS | 代码↔模板↔SKILL,对不上5处显式标;每工具Fidelity |
| R5 部署态真实性 | ✅ PASS | exec_os_api 云侧删入denylist,FunctionExec吸收;真实工具名 |
| R6 引用穷尽核验 | ✅ PASS | 抽查13处file:line全属实,无错引(本版最大改进) |
| R7 AP 元字段 | ✅ PASS | 5个meta四字段非空+precondition+三件套 |
| R8 报告状态门 | ✅ PASS | DRAFT+本§9审核记录;未sign-off未PUBLISHED |
| R9 AgentProfile页结构 | ✅ PASS | 第二轮打开profile.html逐项核:单页+总览图+A1-A4 tab+L0-L6(A1 26卡)+下钻JS+每卡观点+依据;3处file:line抽查属实 |
红线结论:R1-R9 全 PASS,无 FAIL。 R6 引用13处全属实;R9 第二轮打开两交付页逐项核通过。
§9.1/9.2 审美四维质疑(Q-V1..Q-V13 · 🔴最重 🟡次要 ✅正向)
| Q | 维度 | 质疑 | 建议解决方案 | 级 |
| Q-V1 | 充分 | file_transfer工具桶在靶内可枚举(push/pull 2工具)B'误标外部crate漏挖→工具22+非20,漏跨设备文件外发AP | 补file_transfer桶+评估AP-06(读敏感文件→push跨设备外发) | 🔴 |
| Q-V2 | 公平 | AP-05/03(ext-hostile)与native混入同降序榜占#1/#2凌驾native头号AP-01;前置门槛未扣分 | native与ext-hostile分区,或加precondition_penalty;摘要首句改AP-01 | 🔴 |
| Q-V3 | 严谨 | 'exec_os_api代码已删'措辞不精确,SDK端侧仍保留仅云侧不暴露 | 改为'云侧a-system移除入denylist,FunctionExec吸收;端侧SDK保留' | 🟡 |
| Q-V4 | 合理 | A3视觉链已立ORP-40/41/已入Source却Top-5无对应AP(不对称);§C.4逃逸结论悬'留A4'未闭合 | 补视觉链AP;§C.4降级为假设性待端侧核 | 🔴 |
| Q-V5 | 充分 | UNK-2 jiuwen检索投毒+lcm自动注入通道在靶内可深挖却仅标待核(直喂recalled_context) | 核lcm是否自动注入,是则补Source(检索投毒)否则闭合UNK-2 | 🟡 |
| Q-V6 | 严谨 | 危害分5条全10截顶,harm_level仅注释未进排序数学(加和被全10主导) | harm_level进排序(tiebreak/权重);§4标题列harm_level | 🟡 |
| Q-V7 | 合理 | AP-01外发跳web_fetch(url_guard)与WebSearch(query外带不受管)合记d=0.80,摩擦不同 | 拆两子链分评,WebSearch外带更低摩擦作代表 | 🟡 |
| Q-V8 | 公平 | 正向确认:Novelty多附对照依据未滥抬,公允 | 保持现状 | ✅ |
| Q-V9 | 充分 | SecurityProfile矩阵也漏file_transfer桶2工具(push file_transfer.rs:91/pull:270),分母应22+ | 矩阵补2行,标push=DataExfil跨设备/pull=注入面 | 🔴 |
| Q-V10 | 严谨 | 两交付页SC总数冲突:Security页'6个SC' vs AgentProfile/源文档'9个SC'(剔5鉴权SC+掺3非编号项) | 统一SC口径(9个),两页一致 | 🔴 |
| Q-V11 | 严谨 | Hook默认未挂载空挂载点,不应计入SC组件数 | 从SC计数剔Hook或标'潜在挂载点'非组件 | 🟡 |
| Q-V12 | 公平 | 总判措辞已克制(声明不绝对化),但结构层有效防御(url_guard/path_util)与'无'未分层呈现略偏单边 | 分层呈现:结构层有基础防御/内容动作语义层无 | 🟡 |
| Q-V13 | 充分 | AgentProfile A2/A3/A4画像稀疏(2/3/3卡多层无独立卡),A3视觉链已立ORP却无L2/L4卡片落地 | 深化A2/A3/A4(尤其A3视觉链),诚实标待深挖不构成FAIL | 🟡 |
| Q-V14 | 严谨(同步修订) | Cron 工具行原属性三处错(a_system bucket / 端远程 / Sink-Persist×ConfigTamper);真值=独立 crate cron/{mod.rs,host.rs} / 端侧 host backend / Sink-CodeExec×SinkIntent-C2×Affected-Schedule | 已同步修订 §02 L2 表 | ✅ 已修正 |
| Q-V15 | 充分(结构修正) | 原 IS-3 load_skill accessibility=ITM0.6 暗含"LLM 不能创建 Skill";实战证实 PC 端三写路径(UI/REST/direct-write)均绕过 load_skill,accessibility=PUB1.0 | ITM0.6→PUB1.0;ORP-45/46 提案 | ✅ 已修正 |
| Q-V16 | 充分(覆盖增量) | B' 原仅 5 AP+8 SC-GAP+5 ORP 漏 PC 端 SubAgent 攻击面;4b 大改新增 1 AP+5 SC-GAP+5 ORP+§3.5 | 全部落地 | ✅ 已修正 |
§9.3 总评
红线 R1-R9 全 PASS(含两交付页)。审美最重:Q-V1/Q-V9(file_transfer桶报告+矩阵双漏)·Q-V2(ext-hostile混排)·Q-V10(两页SC口径6vs9冲突)·Q-V4(A3视觉链无AP)。13条均非返工级,属深化/分区/补全/一致性。报告质量在B旧版之上实质飞跃(范围纠偏+引用核验+真实工具名)。建议采纳 Q-V1/Q-V2/Q-V9/Q-V10 后 sign-off。维持 DRAFT,待安南逐条裁决。