CVE-2025-67898CVE-2025-67898是MJML框架中的一个中危目录遍历漏洞。MJML是一款流行的开源邮件模板框架,通过简化HTML邮件的响应式设计来帮助开发者快速创建跨平台兼容的邮件内容。该漏洞存在于mj-include组件中,攻击者可以利用目录遍历字符(如../)来访问服务器上的任意文件。通过构造特殊的mj-include标签,攻击者能够测试目标服务器上特定文件的存在性。当设置type属性为"css"时,攻击者甚至可以读取目标文件的内容,从而获取敏感信息如配置文件、源代码、环境变量等。该漏洞是此前CVE-2020-12827的不完整修复,暴露出组件在处理文件路径时缺乏充分的输入验证和路径规范化处理。此漏洞的CVSS评分为4.5,属于中等严重程度,但考虑到其可能导致敏感信息泄露,仍需及时修复。攻击复杂度较低,无需认证和用户交互即可实施攻击,攻击向量为本地网络。
该漏洞的核心问题在于MJML的mj-include组件未能正确验证和规范化用户提供的文件路径。攻击者通过在path属性中注入目录遍历序列(如../../../etc/passwd或..\..\..\windows\win.ini),可以突破预期的文件包含目录限制。漏洞利用场景分为两种:1)文件存在性探测:攻击者可以通过观察错误消息或响应时间来判断服务器上是否存在特定文件;2)文件内容读取:当设置type="css"时,存在漏洞的代码会直接读取指定路径的文件内容并将其嵌入到生成的邮件模板中。技术层面,漏洞代码在处理path参数时直接拼接文件系统路径,而非使用安全的方法(如realpath()验证最终路径是否在允许范围内)。值得注意的是,CVE-2020-12827曾尝试修复类似问题,但修复不完整,仅针对部分场景进行了限制,未能彻底解决目录遍历风险。攻击者可以利用此漏洞读取服务器上的敏感文件,包括但不限于:系统配置文件(如/etc/passwd、.env)、应用源代码、SSH密钥、数据库配置等。