漏洞概述 标题: Unauthenticated Admin API Access via Blanket chrome-extension:// Origin Allowlist 描述: SiYuan Note 的 HTTP 服务器无条件信任所有 来源,授予 权限给任何已安装的浏览器扩展,无需任何认证。结合桌面安装时默认的 为空字符串,任何 Chrome/Chromium 扩展(包括被篡改的合法扩展)可以通过供应链攻击,对 SiYuan 内核的 API 进行完全认证的访问,导致数据泄露、存储型 XSS 注入和配置篡改。 影响范围 受影响版本: SiYuan <= v3.6.5 修复版本: v3.7.0 漏洞详情 Blanket chrome-extension:// Origin Trust (CWE-346) 在 中, 中间件允许所有 来源通过认证: 在 中,请求被分配 : 字段默认为空字符串(桌面安装时)。当为空时,不进行令牌验证。这意味着任何 Chrome/Chromium 扩展都可以对 SiYuan 内核进行完全认证的 API 调用。 概念验证 (POC) 未认证的 admin API 访问通过浏览器扩展: 一个最小化的 Chrome 扩展,仅使用默认权限: 该扩展不需要任何特殊权限。 来源头由浏览器自动发送, 中的 行授予 权限,无需任何令牌检查。 影响 未认证的 admin API 访问: 任何已安装的浏览器扩展,启用对 SiYuan 内核的完全控制。 工作区数据泄露: 通过 、 、 等 API。 存储型 XSS 注入: 通过 admin API 端点( 、 ),持久化在用户的笔记中。 配置篡改: 通过 ,启用持久化和进一步攻击面扩展。 供应链放大: 单个被篡改的流行 Chrome 扩展可以立即利用所有 SiYuan 桌面用户。 建议的修复方案 移除 blanket chrome-extension:// 允许列表: 如果确实需要扩展访问,实现一个每会话令牌交换机制:SiYuan UI 在启动时生成一个随机令牌,扩展必须通过专用配对端点呈现它。这确保只有明确授权的扩展可以访问 API。