CVE-2026-23851SiYuan(思源笔记)是一款面向个人用户的知识管理系统。在3.5.4之前的版本中,存在一处严重的逻辑漏洞,存在于/api/file/globalCopyFiles接口。该接口设计用于在应用工作区内复制文件,但由于缺少适当的路径验证机制,攻击者(已认证的低权限用户)可以利用此漏洞读取服务器文件系统上任意位置的文件。漏洞的核心问题在于globalCopyFiles函数虽然检查了源文件是否存在,但没有验证源路径是否位于授权的工作区目录范围内。这使得攻击者可以构造特定的请求,指定任意系统路径作为源文件,实现未授权的文件访问操作。该漏洞不需要用户交互,攻击者只需拥有基本的认证凭证即可利用,对系统机密性造成严重影响。
漏洞存在于SiYuan的api/file.go源文件的globalCopyFiles函数中。该函数接收JSON请求体中的源路径列表(srcs参数),用于执行文件复制操作。代码逻辑使用filelock.IsExist(src)函数检查每个源文件是否存在,但关键缺陷在于缺少路径规范化验证和边界检查。攻击者可以通过以下方式利用:1) 构造恶意的srcs数组,指定系统任意路径如/etc/passwd或敏感配置文件;2) 发送POST请求到/api/file/globalCopyFiles端点;3) 服务器端代码不验证路径是否在授权工作区内,直接执行文件读取和复制操作;4) 攻击者获取目标文件内容。由于是已认证用户即可利用,且无需特殊权限,该漏洞可被低权限账户用于横向移动和信息收集。修复版本3.5.4增加了路径验证逻辑,确保源文件必须位于工作区目录内。