IPBUF安全漏洞报告
English
CVE-2026-35613 CVSS 5.1 中危

CVE-2026-35613 coursevault-preview路径遍历漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-35613
漏洞类型
路径遍历
CVSS评分
5.1 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
coursevault-preview

相关标签

路径遍历coursevault-preview信息泄露CVE-2026-35613

漏洞概述

coursevault-preview是用于预览课程材料文件的工具,其0.1.1之前的版本存在路径遍历漏洞。由于resolveSafe工具中的边界检查仅使用了String.prototype.startsWith(baseDir)方法,未能正确强制目录边界。当攻击者控制relativePath参数,且存在与baseDir共享字符串前缀的同级目录时,可读取配置目录外的文件。该漏洞已在0.1.1版本中修复。

技术细节

该漏洞的核心在于路径验证逻辑存在缺陷。开发者在resolveSafe工具中,仅对规范化后的路径执行了startsWith(baseDir)检查。这种检查方式无法防止目录逃逸,因为它只验证了字符串前缀,而没有验证路径是否实际在基础目录的树状结构下。利用条件是文件系统中存在一个与baseDir名称有公共前缀的同级目录。例如,若baseDir为'/app/data',且存在'/app/data_backup'目录,攻击者通过构造'../data_backup/file'的相对路径,经规范化后通过前缀检查,从而绕过安全限制读取敏感文件。

攻击链分析

STEP 1
1. 环境探测
攻击者识别目标使用的是coursevault-preview组件,并探测可能存在的同级目录结构。
STEP 2
2. 构造恶意路径
攻击者构造包含'../'序列的relativePath,目标指向与baseDir共享前缀的同级目录。
STEP 3
3. 绕过检查
发送恶意请求,resolveSafe函数的startsWith检查错误地判定路径安全。
STEP 4
4. 读取文件
应用程序读取并返回了baseDir之外的敏感文件内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Vulnerable logic simulation in Node.js const path = require('path'); function resolveSafe(baseDir, relativePath) { const resolvedPath = path.resolve(baseDir, relativePath); // Vulnerable check: only checks string prefix if (resolvedPath.startsWith(baseDir)) { return resolvedPath; } return null; } // Scenario const baseDir = '/var/www/coursevault'; // Assume /var/www/coursevault_old exists const payload = '../coursevault_old/config.db'; const result = resolveSafe(baseDir, payload); if (result) { console.log(`[+] Exploit Successful! Reading: ${result}`); }

影响范围

coursevault-preview < 0.1.1

防御指南

临时缓解措施
建议立即升级至0.1.1版本。若无法立即升级,请确保运行环境中不存在与baseDir名称前缀相同的其他敏感目录,或通过WAF规则拦截包含大量../序列的请求路径。

参考链接

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