在ejs中检测到已知的中等严重性安全漏洞< 2.5.5

时间:2017-12-02 22:47:00

标签: node.js github xss ejs

我在GitHub的一些项目中得到了这个警报:

  

我们在其中一个依赖项中发现了潜在的安全漏洞   由您贡献的存储库使用。

     

在ejs中检测到已知的中度严重性安全漏洞< 2.5.5   在package.json中定义。 package.json更新建议:ejs~> 2.5.5。

我可以通过在package.json中进行推荐更新来消除警告,而npm update似乎没有问题。但我有点不愿意开始搞乱生产服务器。

此漏洞是 https://nvd.nist.gov/vuln/detail/CVE-2017-1000188 创建于11.16.2017。在提醒的项目中,ejs使用了express,而express仅使用sequelize

是否有人了解此漏洞?在ejs静态和内部使用express的情况下,XSS如何成为可能?是否存在ejs - >的真实用例express - > sequelize可能容易受到XSS攻击?

1 个答案:

答案 0 :(得分:2)

CVE链接到this commit之后的an earlier commit,它阻止某些数据变量传递到renderFile,转换为控制EJS'的选项。行为。回顾the EJS changes from 2.5.3 to 2.5.5,引入了可以转换为配置选项的允许数据列表。

如果Express应用程序直接从客户端(renderreq.params)将数据传递到req.body,这可能是一个问题,恶意用户可以将EJS选项添加到任何请求中通过settings['view options']对象发送。我猜是允许你注入内容的其中一个。

EJS也开始在2.5.5版本的错误消息中转义filename内容,它似乎是一个快速修复,然后才能正确转义,这似乎符合XSS模式。整个错误消息通常需要在客户端呈现之前进行转义,如果您使用它的默认非生产错误处理,则表达式会为您执行此操作。

除了您可以通过XSS提出的请求之外,我无法想象Sequelize将如何直接受到XSS漏洞的影响。