Files
Daily-Campaign-Agent/docs/security-boundaries.md
T

30 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安全边界
## 信任与隔离
Pi 没有内置 Sandbox;Project Trust 不是 Sandbox。Extension/Tool 与 Pi 继承 Node 进程权限。课堂版只提供应用层最小权限,不能替代容器、VM、micro-VM 或远程 sandbox。
## 凭证
密钥只在 Session `InMemoryCredentialStore` 中存在。输入/输出/log/SSE 均按 allowlist 和 redaction 处理;前端不持久化密钥。不接受任意 headers、命令型凭证解析或 query key。
## 路径
SafeWorkspace 对绝对路径、`..`、NUL、canonical root、父目录 realpath 和符号链接做检查。保存路径固定为 `report.md`,临时文件使用排他打开、`O_NOFOLLOW`,同步后原子 rename。Skill 正文例外读取只允许已发现索引中的 canonical `SKILL.md`。
## 图片
扩展名、声明 MIME、magic bytes 三重一致;只收 JPEG/PNG/WebP;限制字节与总像素;sharp 自动旋转并重新编码,移除 EXIF/ICC;随机服务端文件名;附件只能通过 `(sessionId, attachmentId)` 查找。
## 表格附件
只接收 XLSX、UTF-8 CSV 和 UTF-8 TSV;默认限制 20 MB。XLSX 校验 ZIP 签名和工作簿关键条目,CSV/TSV 拒绝 NUL 与非法 UTF-8。原始文件使用随机服务端文件名写入当前 Session,模型只能把当前 Session 的 `attachmentId` 交给固定的 `analyze_uploaded_report` 工具;工具以无 shell 的参数数组执行仓库内置分析器。
## SSRF
Base URL 拒绝非 HTTPS(开发 loopback 除外)、userinfo、fragment、凭证参数、畸形 URL、私网/loopback/link-local/metadata 解析结果。生产应再配置 egress proxy,在每次重定向/连接前做等价检查;本课堂实现不主动跟随连接测试重定向。
## 审批
审批发生在 Pi `tool_call`、Tool 执行之前。Broker 决策是唯一权威;超时等同拒绝;Abort/删除立刻取消;重复同决定幂等、冲突决定 409。审批不替代路径和 schema 校验。