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

我在GitHub上获得了一些项目的警报:

我们发现您所贡献的存储库使用的某个依赖项存在潜在的安全漏洞。

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

我可以通过在package.jsonbuild议更新来摆脱警告,并且npm update似乎没有问题。 但我有点不情愿开始搞生产服务器。

该漏洞的https://nvd.nist.gov/vuln/detail/CVE-2017-1000188创build于11.16.2017。 在惊动的项目中, ejsexpress使用,而express只和sequelize一起使用。

有没有人了解这个漏洞? 在ejs被静态和内部使用的情况下,XSS将如何可能? 在ejs – > express – > sequelize可能容易受到XSS攻击的情况下,是否有真正的用例?

CVE链接到这个提交 之前的提交 ,它阻止了一些数据variables被传递到renderFile被转换成控制EJS行为的选项。 回顾从2.5.3到2.5.5的EJS变化,引入了可以变成configuration选项的允许数据列表。

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

EJS还开始转义2.5.5版本的错误消息中的filename内容,看起来是一个快速修复之前,它可以正确逃脱,这似乎适合XSS模具。 整个错误消息通常需要在客户端上呈现之前进行转义,如果使用默认的非生产error handling方式,则表示会为您提供此function。

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