漏洞概述 Cherry Studio的网页搜索实现创建了一个具有 和 的Electron ,然后加载远程内容。页面提供的JavaScript可以使用Node.js API(如 、 、 和 )。本地搜索提供程序路径为每次搜索加载配置的搜索引擎URL到这个特权窗口。附加路径在启用 时加载单个结果页面,并在同一窗口中打开本地提供程序网站。因此,远程JavaScript以Cherry Studio进程的操作系统权限运行,可以读取或修改文件、执行命令,并访问用户可用的凭据。 影响范围 受影响版本:>= 1.2.2, <= 1.6.12 严重程度:Critical CVSS 3.1:9.6 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:H) 修复方案 目前尚未提供补丁版本。 受影响代码 特权搜索窗口的创建 加载提供的URL并执行页面 可达路径 1. 本地搜索提供程序 - 无条件地将配置的搜索URL加载到特权窗口中。 - 页面及其包含的任何脚本都具有Node.js访问权限。 2. 搜索结果页面 - 当启用 时,将单个结果URL加载到同一窗口中。 - SearXNG和本地提供程序在检索结果内容时将 设置传递到此函数。默认情况下此设置被禁用,因此此路径是可选的。 3. 提供程序设置 - 本地提供程序设置操作在特权窗口中打开提供程序网站。 攻击条件 本地搜索提供程序页面始终在提供程序使用时加载到特权窗口中。利用需要攻击者控制的JavaScript在搜索页面中运行,例如通过受感染的页面或第三方脚本。 加载单个搜索结果需要启用 。一旦启用,攻击者控制的搜索结果URL直接加载到特权窗口中。 设置路径需要攻击者控制的JavaScript在应用程序加载的提供程序网站中。 在任何情况下,用户都必须启动搜索或打开提供程序网站。远程页面本身无需单独的权限提示即可获得Node.js访问权限。 最小概念验证(POC) 以下页面演示了通过创建无害标记文件在操作系统临时目录中访问Node.js: 影响 远程页面JavaScript以桌面应用程序的权限运行,而不是正常沙盒浏览器页面的权限。成功的攻击可以: 读取或修改用户可访问的文件; 访问应用程序数据、API密钥、SSH密钥和云凭据; 执行本地程序或shell命令; 修改启动文件或其他持久性位置; 终止进程或删除用户数据。 需要用户交互来启动受影响的搜索或打开提供程序设置页面。不需要攻击者控制的账户或应用程序权限。 披露时间线 2025年4月10日:受影响的 实现在公共提交中引入。 2025年4月11日:Cherry Studio 1.2.2,第一个受影响版本发布。 2025年4月8日:通过GitHub私有漏洞报告提交报告。 2025年7月3日:主分支中移除了遗留的 路径。 2025年7月5日:发布了包含受影响代码的稳定版本。 2025年7月16日:公开披露技术细节。 参考 GitHub安全公告:GHSA-jhw3-9q9r-gc5w 引入提交:链接 主分支移除提交:链接 Electron安全指南:链接