news 2026/9/19 11:04:05

Cherry Studio 安全策略全解读:漏洞上报、版本支持与安全防护体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cherry Studio 安全策略全解读:漏洞上报、版本支持与安全防护体系

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.patchai@6.0.185.patch等),可以看出项目对上游依赖问题会采取主动打补丁的方式及时修复,而非被动等待上游发版。

2. TypeScript 严格模式与 Lint 检查

项目全面采用 TypeScript 并启用了严格检查。typecheck脚本(见 package.json)会对 Node 侧与 Web 侧分别执行tsgo --noEmit类型检查,test:lint则组合oxlinteslint双引擎进行代码规范校验。

在源码中可以看到严格类型约束的实际效果:例如 IPC 校验模块 src/main/core/security/validateSender.ts 中,对IpcMainInvokeEventsenderFrameWebFrameMain等 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.jsvalidate-edition-artifacts.jsvalidate-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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 11:03:18

10 分钟用 TaoToken 跑通 opencode 的 MCP 文件系统服务器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 11:02:39

阿里开源Skill编排引擎:轻量级Agent调度框架

1. 项目概述&#xff1a;这不是又一个“玩具级”Agent框架&#xff0c;而是面向真实业务流的Skill编排引擎最近刷到“阿里又开源了一个神级 Skill 项目&#xff01;”这个标题&#xff0c;我第一反应不是点开&#xff0c;而是先停顿三秒——因为过去两年里&#xff0c;“XX公司…

作者头像 李华
网站建设 2026/9/19 11:01:16

Altium Designer 25合规部署与工程标准化实战指南

1. 这不是“破解教程”&#xff0c;而是一次真实工程环境的重建手记Altium Designer 25刚发布那会儿&#xff0c;我手头正赶一个四层高速USB3.0PCIe x4混合信号板的量产交付。客户要求所有设计文件必须基于AD25生成&#xff0c;且EDA工具链需通过ISO9001第三方审计——这意味着…

作者头像 李华
网站建设 2026/9/19 10:55:42

AUTOSAR多核OS配置实战:从TC275到Davinci Cfg的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 10:54:00

Claude Code 评测:TaoToken 实测一个 TS 仓库跨文件重构的 Token 消耗

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华