文章总结: 本文分析了Stackfield桌面应用中的路径遍历漏洞CVE-2026-28373,攻击者可通过恶意数据包将文件写入系统关键目录实现远程代码执行。漏洞源于解密过程中对用户控制的filePath参数校验不足,影响2026年3月3日前版本。官方已发布1.10.2版本修复,建议用户及时更新并避免导入不可信数据包。 综合评分: 85 文章分类: 漏洞分析,WEB安全,应用安全,渗透测试,安全开发
Stackfield 桌面应用任意文件写入导致远程代码执行漏洞分析 (CVE-2026-28373)
幻泉之洲
2026年3月27日 15:08 北京
在小说阅读器读本章
去阅读
本文详细分析了 Stackfield 端到端加密协作平台桌面应用中存在的路径遍历漏洞 (CVE-2026-28373)。攻击者可利用此漏洞将任意文件写入受害者文件系统的任意可写目录,并通过在启动项等特殊位置写入恶意脚本,最终实现远程代码执行 (RCE)。Stackfield 团队在报告后次日便发布了修复版本,响应迅速。
漏洞概述
CVE 编号:CVE-2026-28373
危害等级:高危。该漏洞允许攻击者在用户导入恶意的组织数据备份时,通过路径遍历将文件写入系统关键位置(如 Windows 启动目录、SSH 授权密钥文件等),从而获得持久化权限或直接执行代码。
影响版本:该漏洞影响 Stackfield 在 2026年3月3日之前发布的 Windows 和 macOS 桌面客户端。
技术原理分析
Stackfield 是一个端到端加密的协作平台,其桌面应用基于 Electron 开发。漏洞的核心在于解密组织数据导出时对用户控制的 filePath 和 fileGuid 参数处理不当,导致路径遍历。
当用户使用桌面客户端解密一个导出(可以是目录或压缩包格式)时,应用会执行以下流程:
-
读取
export.json控制文件,遍历其中标记了hasEncryption: true的房间配置。 -
对每个加密附件对象的
cryptFields字段,使用工作区密码进行 AES-CTR 解密,得到一个包含文件密钥等信息的字段映射对象。 -
函数
V()负责处理解密后的文件。关键问题出现在这里:V = function(i, e) { // … e = i.filePath.replace(i.fileGuid, “”); // 此处根据 filePath 和 fileGuid 计算目标路径 p.addLocalFile(t, e); }
-
addLocalFile()函数最终执行文件系统写入:
this.addLocalFile = function(e, t) { var i = l.basename(e), a = l.join(r, t); // r 是导出基础目录,t 是计算出的目标路径 d.existsSync(a) || d.mkdSync(a); d.copyFileSync(e, l.join(a, i)); try { d.unlinkSync(e) } catch (e) {} }
由于 filePath 和 fileGuid 均直接来自用户控制的导出 JSON 文件,且没有任何针对路径遍历序列(如 ../)的过滤,攻击者可以构造特殊的值让其拼接后能够跳出导出基础目录,将文件写入任意位置。
攻击向量设计
攻击面临一个技术难点:filePath 在流程中还被用于查找加密的数据块文件(chunk)。如果直接写入 ../ 会导致查找失败,因为应用会去导出目录之外寻找不存在的文件。
绕过方法是利用 i.filePath.replace(i.fileGuid, \"\") 这一替换操作。攻击者可以将 fileGuid 设置为一段可控的前缀,让替换后剩下的字符串包含路径遍历序列。例如:
filePath = ‘foo/foo//../../AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup’ fileGuid = ‘foo/foo//’
在读取数据块时,拼接的路径为 base/foo/foo//../../AppData/.../Startup/1,经 path.join() 规范化后,实际会在导出基目录下的 AppData/.../Startup/ 中寻找一个名为 1 的文件。攻击者可以预先在导出包的这个相对路径下放置加密的数据块文件。
在写入文件时,经过 filePath.replace(fileGuid, \"\") 处理,目标路径变为 ../../AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup,这样就能成功将文件写入系统真实的启动目录。
影响范围
-
受影响产品
:Stackfield 桌面客户端(Windows 版和 macOS 版)。
-
受影响版本
:2026年3月3日之前发布的版本。具体版本号未全部列举,建议用户升级至 1.10.2 或更高版本。
-
受影响组件
:处理加密组织数据导出(目录格式)的解密功能。
PoC 说明
攻击者需要构造一个恶意的加密组织数据导出包。利用公开的 PoC 脚本(GitHub – rcesecurity/exploits/CVE-2026-28373)可以一键生成。
例如,要生成一个写入 Windows 启动目录的批处理脚本,可执行以下命令:
python3 exploit.py -c exp.txt –room-id aaaehg00ac –depth 2 -d “/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/” -f “pwned.bat” –password-stdin
其中 exp.txt 是待写入的恶意脚本内容,例如启动计算器的命令:
@echo off start calc.exe
当受害者使用 Stackfield 桌面客户端导入并解密这个恶意导出包时,pwned.bat 文件将被写入其 Windows 启动文件夹,下次用户登录时自动执行,实现远程代码执行。
对于 macOS 系统,可以利用类似的路径遍历,将恶意脚本或命令写入 ~/.zshenv、~/.bash_profile 或 SSH 公钥到 ~/.ssh/authorized_keys 等位置,实现持久化控制。
修复建议与缓解措施
官方修复:Stackfield 在收到漏洞报告后的第二天(2026年3月3日)就发布了桌面客户端的修复版本 1.10.2,修复了路径遍历问题。这反应速度值得称赞。
用户措施:
- 立即将 Stackfield 桌面客户端更新至 1.10.2 或更高版本。
- 不要导入来自不可信来源的 Stackfield 组织数据导出文件(.zip 或目录)。
开发者教训:
- 在处理用户提供的文件路径时,必须进行严格的规范化、解析和校验,防止路径遍历。
- 对于拼接路径的操作,应使用安全 API 确保路径被限制在预期的基目录内(例如 Node.js 的
path.resolve后再进行前缀检查)。 - 关键文件操作逻辑,尤其是在解压、解密等场景下,应进行代码审计和安全测试。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:幻泉之洲 《Stackfield 桌面应用任意文件写入导致远程代码执行漏洞分析 (CVE-2026-28373)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论