# 思源笔记 任意文件读取漏洞
## 概述
SiYuan 是一款个人知识管理系统。在 3.5.4 版本之前,其 Markdown 功能存在漏洞,允许不受限制的服务器端 HTML 渲染,导致可利用的本地文件读取(LFD)漏洞。
## 影响版本
3.5.4 之前的版本
## 细节
漏洞源于 Markdown 功能在渲染过程中未对 HTML 内容进行有效限制,攻击者可利用该机制在服务端渲染恶意 HTML,进而读取本地系统文件。
## 影响
攻击者可利用该漏洞进行任意本地文件读取(LFD),可能导致敏感信息泄露。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Arbitrary file reading vulnerability · Issue #16860 · siyuan-note/siyuan -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键信息
- **标题**:Arbitrary file reading vulnerability #16860
- **状态**:Closed
- **创建者**:88250
- **创建时间**:2天前
- **相关漏洞ID**:
- GHSA-cv54-7ww7-qxcw
- GHSA-94c7-q2fj-7682
- **标签**:
- Bug
- **里程碑**:
- 3.5.4
- **处理行动**:
- 添加了2个提交,修复了该漏洞
- 在2天前被标记为已完成并关闭
- **备注**:
- 提到的SSRF(服务器端请求伪造)在这个情况下不算作漏洞,因此不作处理
标题: siyuan/kernel/model/file.go at master · siyuan-note/siyuan · GitHub -- 🔗来源链接
标签:x_refsource_MISC
标题: Arbitrary file Read · Advisory · siyuan-note/siyuan · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 漏洞关键信息
### 漏洞名称
Arbitrary file Read
### 漏洞等级
Critical
### CVE ID
CVE-2026-23850
### 漏洞描述
Markdown功能允许不受限制的服务器端HTML渲染,导致任意文件读取(LFD)和完全SSRF访问。
### 影响版本
3.4.2 (Latest)
### 修复版本
v3.5.4
### 漏洞细节
- **Markdown渲染问题:** 在`createDocWithMd`函数中,`markdown`参数直接传递给`model.CreateWithMarkdown`,没有进行任何清理。
- **Markdown渲染问题:** 在`file.go`文件中,`Md2BlockDOM`函数直接处理输入,没有进行任何清理。
### 影响
通过利用该漏洞,攻击者可以成功读取系统中的任何文件,并通过SSRF访问任何内部主机。
### 修复方案
请参考#16860进行修复。
标题: siyuan/kernel/api/filetree.go at v3.4.2 · siyuan-note/siyuan · GitHub -- 🔗来源链接
标签:x_refsource_MISC
标题: :lock: Arbitrary file reading vulnerability https://github.com/siyuan… · siyuan-note/siyuan@b2274ba · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
```md
### 关键信息摘要
#### 漏洞描述
- **漏洞类型**: 任意文件读取漏洞
- **问题**: 代码中未对敏感文件或路径进行有效检查,可能导致攻击者读取任意文件。
#### 修复措施
1. **添加文件路径校验**:
- 引入 `util.IsSensitivePath` 函数,对敏感文件和路径进行检测。
- 检测的敏感文件和路径包括但不限于:
- `etc/passwd`, `etc/shadow`, `etc/gshadow`, `var/run/secrets`, `root`, `ssh`, `gnupg`, `env`, `netrc`, `aspnetcore-secrets`, `key`, `pem` 等。
2. **代码修改文件**:
- **`kernel/api/file.go`**: 修改 `globalCopyFiles` 函数,加入对 `absSrc` 文件路径的敏感性检查。
- **`kernel/model/assets.go`**: 修改 `netAssets2LocalAssets0` 函数,加入对`u`路径的敏感性检查。
- **`kernel/util/path.go`**: 新增 `IsSensitivePath` 函数,对各种敏感文件和路径做统一检测。
#### 代码修改要点
- 对 suspicious 路径进行清理和统一检测,增强对敏感文件访问的安全检查。
- 在发生敏感文件访问时记录日志并返回错误码,阻止进一步操作。
- 将检测扩展到多种扩展名的敏感文件中,如 `.env`, `.key`, `.pem` 等。
```
标题: :lock: Arbitrary file reading vulnerability https://github.com/siyuan… · siyuan-note/siyuan@f8f4b51 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- 漏洞类型: 任意文件读取漏洞 (Arbitrary file reading vulnerability)
- 漏洞编号: #16860
- 提交者: 88250
- 提交时间: 2天前
- 修复内容: 在`kernel/util/path.go`文件的`IsSensitivePath`函数中添加了对`hosts`文件的检测
暂无评论