# 安全政策 本文档旨在帮助你了解 SproutClaw 的安全设计理念及其边界范围。 ## 安全模型概述 SproutClaw 是一个在本地运行的 Coding Agent,运行于使用者账号的安全边界之内。监控其操作或将其限制在容器、虚拟机或其他沙箱环境中,是使用者自身的责任。 SproutClaw 将本地用户账号及该账号可写的文件视为与 SproutClaw 进程处于同一信任边界内。如果攻击者能够修改用户主目录、工作区、Shell 启动文件、环境变量或 SproutClaw 配置文件,通常即可影响 SproutClaw 或其他本地开发工具的行为。依赖此类本地写入权限的报告不属于安全漏洞,除非其能证明 SproutClaw 本身授予了该写入权限,或越过了操作系统的权限边界。 SproutClaw 依赖使用者仅安装可信扩展、加载可信技能,并仅在可信仓库中使用。这是因为 `AGENTS.md` 等文件中的内容或代码注释可被用于对 Coding Agent 进行提示词注入,且此类攻击无法从根本上防御。 ## 报告漏洞 如果你认为在 SproutClaw 中发现了安全漏洞,请通过以下方式私下报告: - 直接联系项目维护者 报告时请包含: - 问题描述及其影响 - 复现步骤、概念验证或相关日志 - 受影响的包、版本、提交哈希或配置信息 - 已知的缓解措施(如有) 请勿为安全敏感问题创建公开 issue。 ## 范围内(In Scope) 以下属于安全问题的受理范围: - 分发包、命令行工具、API 及仓库代码中的安全问题 ## 范围外(Out of Scope) 以下内容不在安全问题受理范围之内: - 本地代码执行或沙箱行为(SproutClaw Coding Agent 有意不提供沙箱) - 用户自行安装的扩展或技能的行为 - 在不可信仓库中工作所带来的风险 - 安装不可信扩展、技能、包或工具所带来的风险 - 由不可信中间人代理(MITM Proxy)导致的问题 - 将 SproutClaw 暴露在公网上的风险 - 提示词注入攻击 - 第三方或用户自行控制的凭据泄露 - 需要在目标机器上具备创建、修改、删除或替换文件、目录、符号链接、环境变量、Shell 配置或其他用户可控本地状态的能力才能复现的报告(包括 `~/.pi`、`~/.pi/agent/models.json`、工作区文件、`AGENTS.md`、技能、扩展、扩展配置、dotfiles 及通过 NFS/漫游配置/dotfile 管理器同步的文件),除非报告能证明 SproutClaw 本身授予了该访问权限 - 由用户有意弱化配置导致的问题 - 针对 SproutClaw Coding Agent 使用可信本地输入/配置的资源耗尽/DoS 声明 - 关于恶意模型输出的报告 - 用户批准或用户主动发起的本地操作被当作漏洞提交的报告 ## 报告者须知 最有价值的报告应展示当前可复现的安全边界绕过,并附有已证明的实际影响。仅展示预期本地 Agent 行为、提示词注入或恶意可信扩展/技能的报告,在本安全模型下不构成安全漏洞。 例如,若报告显示向可信 SproutClaw 配置文件写入恶意内容会导致 SproutClaw 执行命令、加载攻击者控制的工具、向攻击者控制的端点发送凭据或改变其他行为,此类报告属于范围之外。 提交报告时,请尽量包含以下信息:受影响的确切路径、包版本或提交 SHA、配置信息,以及针对最新版本或最新 `main` 分支的概念验证。对于依赖项报告,请提供证据说明已分发的依赖项确实受影响,且该问题可通过 SproutClaw 触达。