ZCyberNews
English
漏洞中危5 分钟阅读
CVE-2023-47268

CVE-2023-47268: PrusaSlicer 3MF 文件可以执行任意代码

CVE-2023-47268 (CVSS 5.3): 通过 PrusaSlicer 2.6.1 的精心制作的 3mf 项目文件在切片时执行任意代码 —— 用户交互仅限于打开文件。

CVE-2023-47268: PrusaSlicer 3MF 文件可以执行任意代码

执行摘要

PrusaSlicer,即Prusa和其他打印机生态系统使用的开源3D打印切片软件,存在一个漏洞,当用户打开一个恶意制作的.3mf项目文件时,允许执行任意代码。这个漏洞被追踪为CVE-2023-47268,被分配了一个CVSS评分5.3(中等严重性),缺陷存在于libslic3r/GCode/PostProcessor.cpp中的后处理脚本处理器。攻击者可以在3mf文件中嵌入任意的shell命令,当文件被切片并且导出G-code时在主机上执行。这个漏洞影响到了PrusaSlicer 2.6.1版本及之前的所有版本。截至本文撰写时,尚未发布补丁,而披露时间线——CVE在2023年底发布——受到了安全研究人员的批评,他们指出缺乏协调的修复。

技术分析

漏洞存在于PrusaSlicer核心库的PostProcessor类中。根据NVD的描述和Prusa自己的文档中的分析,这个缺陷在G-code导出阶段被触发。当用户加载一个.3mf项目文件时,PrusaSlicer解析嵌入的后处理脚本——一个旨在允许自定义G-code修改(例如,添加温度变化或暂停命令)的特性。解析器在将脚本内容传递给系统shell之前,不会验证或清理脚本内容。

具体来说,libslic3r/GCode/PostProcessor.cpp中的PostProcessor::process()函数(截至2.6.1版本)从脚本内容构建一个命令字符串,并通过boost::process::system()或类似的系统级调用来执行。攻击者如果制作一个包含恶意后处理脚本的.3mf文件——例如,一个包含shell元字符如;|或反引号的脚本——可以在主机上实现任意命令执行。该命令以运行PrusaSlicer的用户权限运行。

攻击面很大,因为.3mf文件通常在3D打印爱好者、教育工作者和制造商之间共享。用户只需要在PrusaSlicer中打开文件并启动切片——不需要额外的交互。导出步骤是工作流程的一个常规部分,这意味着漏洞在正常使用中被触发。

PrusaSlicer自己的后处理脚本文档页面(下面链接)描述了该特性的预期用途,但没有警告安全影响。文档声明脚本是在“生成G-code后执行”的,并提供了shell命令的例子,但没有提及输入验证或沙箱。

缓解措施与建议

截至2026年5月9日,尚未发布CVE-2023-47268的官方补丁。PrusaSlicer 2.6.1版本及所有早期构建都受到影响。Prusa团队尚未公开承诺修复时间表。

防御者和用户应采取以下步骤:

  • 避免打开来自不受信任来源的.3mf文件。 将任何.3mf文件视为潜在的恶意文件,特别是那些从论坛、电子邮件附件或共享存储库下载的文件。
  • 如果不需要该特性,则禁用后处理脚本。 在PrusaSlicer中,导航到打印机设置 → 常规 → 后处理脚本并清除任何条目。这可以防止易受攻击的代码路径执行。
  • 使用沙箱环境 来切片不受信任的文件。在具有有限主机访问权限的虚拟机或容器中运行PrusaSlicer。
  • 监控Prusa Research的更新。 漏洞已经得到了很好的记录,修复可能包含在未来的版本中。

在生产环境中使用PrusaSlicer的组织——如教育实验室或制造线——应评估接受来自外部合作者的.3mf文件的风险,并实施文件扫描或手动审查流程。

订阅更新

将最新的网络安全资讯直接发送到您的邮箱。

标签:#prusaslicer#cve-2023-47268#3d-printing#rce#code-execution#3mf

相关文章