Skip to content

安全与信任中心 ​

Pling 通过显式能力减少 Agent 能接触的页面范围,但不会让一个应用自动变安全。安全属性来自组合:足够窄的能力面、应用原有授权、高风险动作前的人工审批,以及后端对每次特权操作的再次校验。

本页说明当前信任边界和部署方必须补上的部分。它不是合规证书、独立审计或对某个部署的安全保证。

先明确承诺边界 ​

  • Pling 尚未经过独立安全审计。
  • 项目没有公开漏洞赏金,也不承诺固定响应时间。
  • 项目不“认证”任何应用或部署。
  • 仓库测试通过,不能证明适配器、模型或客户应用安全。
  • 确认弹窗不是后端授权决定。
  • 签名回执不能让不可逆业务操作变得可逆。
  • Surface 投影不能替代 CSP、CSRF 防护、输出编码、数据库授权或密钥安全存储。

这些限制不是免责声明,而是部署时必须纳入设计的事实。

一次动作经过哪些检查 ​

text
已声明控件
  → 能力投影
  → 会话与范围检查
  → 执行器可用性检查
  → 必要时确认或人工接力
  → 业务处理与后端授权
  → 结构化结果与有界观察

每一层解决不同问题:

  • 声明限制 Agent 可以指代的界面控件;协议没有通用选择器点击或脚本执行逃逸口。
  • 投影按站点白名单与已验证会话 scope 过滤。隐藏 id 不等于授权,调用时还要再检查。
  • 执行复用应用现有执行器。可用性、确认、输入校验、成功判据和结果观察不会出现第二套。
  • 业务授权仍属于应用后端。前端不能证明登录用户有权审批订单、发起退款或读取其他租户数据。
  • 委托用短时、限定范围的凭证替代共享用户浏览器会话,但不取代登录、租户策略和角色检查。

威胁与缓解 ​

威胁当前缓解仍需应用处理
提示注入要求调用未声明控件未知 id 失败关闭;没有任意 DOM 原语已声明能力本身仍可能设计得过宽
模型选错记录稳定记录 id 与执行器侧目标检查业务状态变化可能导致拒绝或失败
重放造成二次写入可按会话启用 request-id 防重放多副本必须提供共享原子守卫
Agent 看到敏感字段显式掩码、隐藏与有界上下文开发者仍可能错误地把敏感字段声明为可见
绕过确认确认属于执行器策略,不是模型工具客户端确认无法抵御已被攻陷的浏览器
委托 token 泄露不透明 token、一次返回、哈希存储、撤销被攻陷客户端在撤销生效前仍可能使用 token
服务商密钥进入浏览器密钥留在服务端网关边缘日志或自定义代理仍可能泄露
连续性导致跨租户访问用户身份只来自已验证会话,后端隔离任务错误的生产适配器仍可能违反端口契约

应用必须自己负责什么 ​

  1. 身份与会话。 把已验证用户映射到会话;不要让客户端自行声明用户、租户或 scope。
  2. 业务授权。 对每个特权动作重新检查角色、归属、金额、状态和审批条件。
  3. 数据边界。 只向模型暴露完成任务所需的字段;对敏感值使用掩码或引用。
  4. 执行环境。 保护模型密钥、委托端点、连续性存储和审计归档;多副本部署使用共享的限流与防重放守卫。
  5. 人工流程。 为不可逆或高风险操作定义确认、双人审批或人工接力,并测试拒绝路径。

上线前检查 ​

区域最低检查
模型网关使用 HTTPS;服务商密钥不出现在浏览器构建;固定允许的模型与上游地址
能力面只声明完成业务所需的动作;危险动作有明确确认策略;已检查无效目标与过期记录
会话缺失、过期、撤销、跨用户和旧 revision 都会失败关闭
数据日志脱敏;上下文不包含 token、完整证件号或其他无关个人数据
外部 Agent暴露范围与会话 scope 取交集;保留可测试的关闭开关
观测请求 id、能力、目标、结果和耗时可用于排障;不靠模型最后一句回复判断成功
事件响应能撤销会话与凭证、关闭外部入口、回滚能力声明,并保留必要审计元数据

上线前应至少演练一次:会话过期、凭证撤销、后端拒绝、目标记录消失,以及外部 Agent 入口关闭。

数据与日志 ​

核心运行时不包含分析、广告标识或远程遥测端点。发往模型网关的数据取决于宿主应用的 Agent 配置与上下文声明。

运营方应向用户说明:

  • 哪个模型服务商接收提示词;
  • 哪些页面字段、记录、状态与反馈进入模型上下文;
  • 服务商是否保留提示词与回复;
  • 凭证与客户数据离开源站前如何脱敏;
  • 审计、委托、连续性与网关日志保留多久;
  • 涉及哪些子处理方或地区。

网关审计事件刻意排除提示词、回复、Cookie 与服务商密钥。Surface 审计事件默认排除输入参数与响应正文。应用可能还需要业务级审计,但这些数据必须遵守自身的访问与保留规则。

暂停与撤销 ​

事件响应计划应能在不删除必要记录的情况下停止执行:

  1. 关闭外部传输或 Surface 路由;
  2. 撤销活跃委托凭证并使相关会话过期;
  3. 禁用或回滚受影响的能力声明;
  4. 保留审计元数据、请求 id 与部署版本;
  5. 要求高风险动作重新授权;
  6. 在重放任何中断写入前核对后端状态。

完整操作见撤销访问与审计动作和委托与信任边界。

报告漏洞 ​

请使用仓库的 Security → Report a vulnerability(GitHub Security Advisories)私下报告。不要在公开 issue 中披露可利用细节、真实凭证或用户数据。

有效报告应包含:

  • 受影响包与版本;
  • 最小复现;
  • 预期信任边界与实际行为;
  • 是否涉及动作执行、确认、Surface、委托、连续性或模型网关;
  • 是否跨越数据或租户边界;
  • 安全的联系方式。

维护者会先确认影响范围和受影响版本,再协调修复与披露。项目不承诺每份报告都形成公开公告,但已确认的安全修复应记录在发布说明中,并且不能暴露用户。

供应链与发布检查 ​

仓库是使用冻结 lockfile 的 pnpm workspace。发布检查验证包名、版本、Apache-2.0 元数据、内部 workspace:* 引用、发布文件边界,以及 tarball 安装冒烟;边界检查禁止案例内出现框架实现或跨层反向导入。

这些检查减少打包错误,但不能证明每个传递依赖都可信、npm 账号未被攻陷,或发布 tarball 与可复现构建完全一致。需要更高保证的团队应自行镜像、扫描、签名并复现构建。