安全与信任中心
Pling 通过显式能力减少 Agent 能接触的页面范围,但不会让一个应用自动变安全。安全属性来自组合:足够窄的能力面、应用原有授权、高风险动作前的人工审批,以及后端对每次特权操作的再次校验。
本页说明当前信任边界和部署方必须补上的部分。它不是合规证书、独立审计或对某个部署的安全保证。
先明确承诺边界
- Pling 尚未经过独立安全审计。
- 项目没有公开漏洞赏金,也不承诺固定响应时间。
- 项目不“认证”任何应用或部署。
- 仓库测试通过,不能证明适配器、模型或客户应用安全。
- 确认弹窗不是后端授权决定。
- 签名回执不能让不可逆业务操作变得可逆。
- Surface 投影不能替代 CSP、CSRF 防护、输出编码、数据库授权或密钥安全存储。
这些限制不是免责声明,而是部署时必须纳入设计的事实。
一次动作经过哪些检查
已声明控件
→ 能力投影
→ 会话与范围检查
→ 执行器可用性检查
→ 必要时确认或人工接力
→ 业务处理与后端授权
→ 结构化结果与有界观察每一层解决不同问题:
- 声明限制 Agent 可以指代的界面控件;协议没有通用选择器点击或脚本执行逃逸口。
- 投影按站点白名单与已验证会话 scope 过滤。隐藏 id 不等于授权,调用时还要再检查。
- 执行复用应用现有执行器。可用性、确认、输入校验、成功判据和结果观察不会出现第二套。
- 业务授权仍属于应用后端。前端不能证明登录用户有权审批订单、发起退款或读取其他租户数据。
- 委托用短时、限定范围的凭证替代共享用户浏览器会话,但不取代登录、租户策略和角色检查。
威胁与缓解
| 威胁 | 当前缓解 | 仍需应用处理 |
|---|---|---|
| 提示注入要求调用未声明控件 | 未知 id 失败关闭;没有任意 DOM 原语 | 已声明能力本身仍可能设计得过宽 |
| 模型选错记录 | 稳定记录 id 与执行器侧目标检查 | 业务状态变化可能导致拒绝或失败 |
| 重放造成二次写入 | 可按会话启用 request-id 防重放 | 多副本必须提供共享原子守卫 |
| Agent 看到敏感字段 | 显式掩码、隐藏与有界上下文 | 开发者仍可能错误地把敏感字段声明为可见 |
| 绕过确认 | 确认属于执行器策略,不是模型工具 | 客户端确认无法抵御已被攻陷的浏览器 |
| 委托 token 泄露 | 不透明 token、一次返回、哈希存储、撤销 | 被攻陷客户端在撤销生效前仍可能使用 token |
| 服务商密钥进入浏览器 | 密钥留在服务端网关 | 边缘日志或自定义代理仍可能泄露 |
| 连续性导致跨租户访问 | 用户身份只来自已验证会话,后端隔离任务 | 错误的生产适配器仍可能违反端口契约 |
应用必须自己负责什么
- 身份与会话。 把已验证用户映射到会话;不要让客户端自行声明用户、租户或 scope。
- 业务授权。 对每个特权动作重新检查角色、归属、金额、状态和审批条件。
- 数据边界。 只向模型暴露完成任务所需的字段;对敏感值使用掩码或引用。
- 执行环境。 保护模型密钥、委托端点、连续性存储和审计归档;多副本部署使用共享的限流与防重放守卫。
- 人工流程。 为不可逆或高风险操作定义确认、双人审批或人工接力,并测试拒绝路径。
上线前检查
| 区域 | 最低检查 |
|---|---|
| 模型网关 | 使用 HTTPS;服务商密钥不出现在浏览器构建;固定允许的模型与上游地址 |
| 能力面 | 只声明完成业务所需的动作;危险动作有明确确认策略;已检查无效目标与过期记录 |
| 会话 | 缺失、过期、撤销、跨用户和旧 revision 都会失败关闭 |
| 数据 | 日志脱敏;上下文不包含 token、完整证件号或其他无关个人数据 |
| 外部 Agent | 暴露范围与会话 scope 取交集;保留可测试的关闭开关 |
| 观测 | 请求 id、能力、目标、结果和耗时可用于排障;不靠模型最后一句回复判断成功 |
| 事件响应 | 能撤销会话与凭证、关闭外部入口、回滚能力声明,并保留必要审计元数据 |
上线前应至少演练一次:会话过期、凭证撤销、后端拒绝、目标记录消失,以及外部 Agent 入口关闭。
数据与日志
核心运行时不包含分析、广告标识或远程遥测端点。发往模型网关的数据取决于宿主应用的 Agent 配置与上下文声明。
运营方应向用户说明:
- 哪个模型服务商接收提示词;
- 哪些页面字段、记录、状态与反馈进入模型上下文;
- 服务商是否保留提示词与回复;
- 凭证与客户数据离开源站前如何脱敏;
- 审计、委托、连续性与网关日志保留多久;
- 涉及哪些子处理方或地区。
网关审计事件刻意排除提示词、回复、Cookie 与服务商密钥。Surface 审计事件默认排除输入参数与响应正文。应用可能还需要业务级审计,但这些数据必须遵守自身的访问与保留规则。
暂停与撤销
事件响应计划应能在不删除必要记录的情况下停止执行:
- 关闭外部传输或 Surface 路由;
- 撤销活跃委托凭证并使相关会话过期;
- 禁用或回滚受影响的能力声明;
- 保留审计元数据、请求 id 与部署版本;
- 要求高风险动作重新授权;
- 在重放任何中断写入前核对后端状态。
报告漏洞
请使用仓库的 Security → Report a vulnerability(GitHub Security Advisories)私下报告。不要在公开 issue 中披露可利用细节、真实凭证或用户数据。
有效报告应包含:
- 受影响包与版本;
- 最小复现;
- 预期信任边界与实际行为;
- 是否涉及动作执行、确认、Surface、委托、连续性或模型网关;
- 是否跨越数据或租户边界;
- 安全的联系方式。
维护者会先确认影响范围和受影响版本,再协调修复与披露。项目不承诺每份报告都形成公开公告,但已确认的安全修复应记录在发布说明中,并且不能暴露用户。
供应链与发布检查
仓库是使用冻结 lockfile 的 pnpm workspace。发布检查验证包名、版本、Apache-2.0 元数据、内部 workspace:* 引用、发布文件边界,以及 tarball 安装冒烟;边界检查禁止案例内出现框架实现或跨层反向导入。
这些检查减少打包错误,但不能证明每个传递依赖都可信、npm 账号未被攻陷,或发布 tarball 与可复现构建完全一致。需要更高保证的团队应自行镜像、扫描、签名并复现构建。

