复制步骤
3.4.0 之前的 jQuery 版本包含这个中级漏洞,称为原型污染(Prototype Pollution)。如果一个未经过净化的源对象包含一个可累加的 __proto_property 属性(可累加意味着它可以在 for...next 循环中使用),恶意代码就可以访问本地 Object.prototype 对象。有了这种访问权限,攻击者就能以所有 Javascript 对象都会继承的方式扩展这个基本对象,从而引入许多可能的攻击向量。jQuery 3.4.0 发布博客中还有更多值得一读的解释。
解决问题
客户应立即更新至jQuery 3.4.0,并始终确保其自定义编程会对源对象进行消毒,以防止出现Prototype Pollution漏洞。 对于无法迁移到jQuery 3的客户,HeroDevs为jQuery 1和jQuery 2提供永无止境的支持和修复。
学习与预防
除了对对象进行消毒之外,还有许多做法可以帮助避免这一问题,从使用不可变对象到属性白名单,再到使用 Object.create(null) 来创建一个没有原型的对象。请注意,这份清单并不详尽,jQuery 开发人员应该了解安全编程实践,以降低此类漏洞利用的风险。
结论
HeroDevs jQuery Never-Ending Support提供的jQuery 1和jQuery 2版本已修复了CVE-2019-11358描述的潜在安全漏洞。要随时了解类似的安全更新,请立即联系我们,成为我们的客户。
资源
注册提醒
每当我们支持的开源软件修复了新的漏洞,我们就会发出警报。