信任与安全模型
A2UI 传输声明式数据,而不是 Agent 生成的可执行代码,因此可以缩小攻击面;但 Agent、消息、Catalog、组件属性、URL 与 Action 仍然不可信。
安全边界
| 边界 | 控制 | 残余风险 |
|---|---|---|
| 协议 | 版本化 Schema 校验 | 资源耗尽、解析器缺陷、重放、半包 |
| Catalog | 组件与函数白名单 | 已允许组件仍可能暴露危险能力 |
| 渲染器 | 宿主维护的原生实现 | URL、Markdown、导航、WebView 与依赖漏洞 |
| Action | 服务端认证与授权 | 过期状态、混淆代理、重复执行 |
| 用户 | 明确确认与来源标识 | 钓鱼、误导内容、强迫式设计 |
声明式渲染改善了什么
Agent 不能通过 A2UI Schema 直接发送任意 JavaScript。宿主决定 Catalog 中有哪些组件以及如何渲染,非法组件名与属性可在显示前拒绝。这让边界比渲染不可信 HTML 或 JSX 更容易审计。
但这不是绝对保证。官方项目已经修复 URL 打开导致的 XSS/反向标签劫持和 DataModel 原型污染,说明渲染器代码与依赖仍属于可信计算基。
必要控制
- 校验准确的协商协议版本。
- 限制 Catalog、组件数、深度、更新频率、URL 与数据模型路径。
- 净化 Markdown,默认禁用原始 HTML。
- 将导航、iframe、剪贴板、下载、认证、支付和文件组件视为高权限能力。
- 依据最新服务端状态授权每个高影响 Action。
- UI 负载不得包含凭证、令牌、私有 Prompt 与非必要个人数据。
- 保留可访问的文本降级并测试失败路径。