Cherry Studio 安全策略全解读:漏洞上报、版本支持与安全防护体系
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
Cherry Studio 是一款支持多个 LLM 提供商的桌面 AI 客户端,其安全策略同时覆盖了「漏洞如何上报」「哪些版本受支持」以及「工程层面如何落实安全防护」三个层面。本文以仓库根目录的 SECURITY.md 为骨架,结合源码中的 IPC 信任校验、SSRF 防护、模型输出消毒等实现,为你完整梳理 Cherry Studio 的安全运营流程与底层防护机制。
一、漏洞报告:正确上报渠道与时限承诺
Cherry Studio 对待漏洞披露的态度是「严肃、及时、负责任」。所有与安全相关的发现都必须通过私有渠道上报,核心规则是:
- 严禁为安全相关报告创建公开 Issue——公开披露漏洞细节会让尚未修复的问题暴露在攻击者面前,危害所有用户;
- 正确入口是 GitHub Security Advisories 的Open a draft security advisory(草稿安全公告)功能;
- 报告内容应包含:问题的详细描述、可复现步骤、潜在影响范围、可行的缓解措施;
- 如适用,建议附带PoC(概念验证)代码或截图,帮助维护团队快速定位与验证。
时限承诺:维护团队会在72 小时内确认收到报告,并在调查过程中持续提供状态更新。这一响应时限与下文的「协调披露」政策配套:修复方案落地并发布之前,漏洞细节不会对外公开。
二、受支持版本:更新到最新版本才能获得安全修复
Cherry Studio 的安全维护范围遵循「最新版本 + 前一个次要版本」原则:
| 版本 | 支持状态 |
|---|---|
最新版本(main分支 / 最新发布版) | ✅ 受支持 |
| 前一个次要版本(Previous minor) | ✅ 受支持 |
| 更早的旧版本 | ❌ 不受支持 |
这意味着:如果你使用的是旧版本,将无法获得安全修复,官方明确建议升级到最新发布版。实际版本号可在根目录 package.json 中查看(当前版本字段为2.0.13),所有安全修复都会随新版本发布。
三、工程级安全措施:从开发到运行的层层防护
SECURITY.md 声明了五大类安全实践。这些并非空泛承诺,在仓库源码中均有对应实现,下面逐一展开。
1. 严格依赖更新与定期漏洞扫描
项目使用pnpm管理依赖(根目录 package.json 中packageManager声明为pnpm@11.8.0),并对依赖版本做了精确锁定而非宽松范围。以安全敏感依赖为例:
electron精确锁定到41.8.0;better-sqlite3(本地数据库引擎)锁定到12.11.1;- 所有
@ai-sdk/*提供商 SDK 均使用精确版本号。
结合仓库patches/目录中大量的补丁文件(如@ai-sdk__anthropic.patch、ai@6.0.185.patch等),可以看出项目对上游依赖问题会采取主动打补丁的方式及时修复,而非被动等待上游发版。
2. TypeScript 严格模式与 Lint 检查
项目全面采用 TypeScript 并启用了严格检查。typecheck脚本(见 package.json)会对 Node 侧与 Web 侧分别执行tsgo --noEmit类型检查,test:lint则组合oxlint与eslint双引擎进行代码规范校验。
在源码中可以看到严格类型约束的实际效果:例如 IPC 校验模块 src/main/core/security/validateSender.ts 中,对IpcMainInvokeEvent、senderFrame、WebFrameMain等 Electron 类型做了精细的类型化处理,类型系统本身就能防止把任意对象误当成可信事件源。
3. 强制代码格式化与 pre-commit 钩子
项目通过biome统一格式化与静态检查(format脚本执行biome format --write && biome lint --write),并配合prepare钩子(prek install)在安装阶段完成环境初始化。CI 脚本ci:basic-check中串联了 lint、format 检查、typecheck、i18n 检查、skills 检查与文档检查,保证任何提交进入主线前都已通过全套质量门槛。
4. 发布前内部安全审查
从发布流程看,仓库在 scripts/release/ 目录下维护了一整套发布校验工具(validate-release-state.js、validate-edition-artifacts.js、validate-prepared-release.js等),配合 docs/contrib/release-workflow.md 中描述的发布流程,安全审查是发版前的重要环节。
5. 专为 MCP 与模型交互设计的安全防护
这是 AI 客户端特有的安全重点。SECURITY.md 特别强调了对 MCP(Model Context Protocol)交互与数据隐私的专门防护,源码中可找到多层实现:
- IPC 调用方信任校验:由于应用启用了
webviewTag、MiniApp 可加载任意远程 URL,src/main/core/security/guardedIpc.ts 中的handleGuarded/assertTrustedSender会对每个 IPC 请求执行来源校验;src/main/core/security/validateSender.ts 则实现了完整的validateSender判定逻辑:拒绝<webview>嵌入客体的请求、拒绝子 iframe 帧、仅信任应用自身 app 根目录内的file:页面与开发服务器源; - 会话级加固:src/main/core/security/selfHardenedSessions.ts 使用
WeakSet登记已自加固的 Electron Session,避免通用加固逻辑覆盖会话所有者安装的独立安全策略; - 模型输出消毒:src/main/ai/untrustedContent.ts 在把模型生成的文本放入受信任提示词边界之前,会剔除不可见字符(零宽字符、Bidi 控制符等)、规范化全角尖括号,并对
system-reminder标签进行 HTML 转义,防止提示注入与排版伪装攻击; - 工具审批机制:MCP 工具调用遵循审批流,详见 docs/references/ai/tool-approval.md,模型不能未经用户确认就执行敏感操作。
6. 远程内容与 SSRF 防护(补充佐证)
与 SECURITY.md 声明的安全实践相呼应,仓库在 docs/references/security/remote-fetch.md 中完整记录了主进程远程抓取的 SSRF 防护规则,对应实现位于 src/main/utils/remoteFetch.ts 与 src/main/utils/remoteUrlSafety.ts:
- 拒绝非 HTTP(S) 协议与内嵌凭据;
- 拒绝 localhost、私网、CGNAT、链路本地、组播、广播、保留地址等字面量 IP;
- 连接打开前先做 DNS 解析,并把实际连接固定(pin)到预校验通过的地址,保留原始
Host头与 TLS SNI,从而封堵 DNS 重绑定(TOCTOU)攻击; - 默认拒绝重定向,跟随重定向时逐跳重新校验并剥离跨源
Authorization/Cookie等敏感头; - 主进程缓冲响应体前强制设置大小上限。
以上防护同样通过app.fetch.allow_private_network偏好提供灵活性,默认开启以兼容局域网 NAS 与代理场景,关闭后恢复完整拦截。
四、协调披露政策
Cherry Studio 采用行业标准的**协调披露(Coordinated Disclosure)**模式:
- 在修复方案开发完成并随新版本发布之前,不会公开披露漏洞细节;
- 对于负责任上报漏洞的研究者,按请求给予署名致谢。
这意味着安全研究者可以与维护团队在私密通道内充分沟通,而不必担心「公开抢跑」导致用户暴露在风险中。
五、致谢与联系方式
维护团队公开感谢安全社区的所有贡献者,并持续认可帮助 Cherry Studio 保持安全的研究人员。
对于不涉及漏洞的一般性安全问题,可通过security@cherry-ai.com联系官方(漏洞报告请仍走 GitHub Security Advisories 草稿通道)。关于漏洞报告时限、版本支持范围等最新声明,始终以根目录 SECURITY.md 为权威依据。
六、进一步阅读:仓库安全相关资源索引
- 安全策略原文:SECURITY.md
- IPC 调用方信任校验实现:src/main/core/security/guardedIpc.ts、src/main/core/security/validateSender.ts
- 会话级安全策略登记:src/main/core/security/selfHardenedSessions.ts
- 校验逻辑单元测试:src/main/core/security/tests/validateSender.test.ts
- 模型输出消毒:src/main/ai/untrustedContent.ts
- 远程抓取 SSRF 防护文档与实现:docs/references/security/remote-fetch.md、src/main/utils/remoteFetch.ts
- MCP 工具审批机制:docs/references/ai/tool-approval.md
- 发布流程与校验脚本:docs/contrib/release-workflow.md、scripts/release/
总的来说,Cherry Studio 的安全策略是一套「运营流程(漏洞上报、版本支持、协调披露)+ 工程实践(依赖治理、静态检查、发布审查)+ 运行时防护(IPC 信任边界、SSRF 防护、MCP 与模型内容防护)」三位一体的体系。对安全研究者而言,遵循本文第一节的私有上报渠道并参考第三节的源码实现,可以快速理解攻击面;对普通用户而言,保持更新到受支持版本,就是最有效的安全实践。
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考