jQuery官方于日前发布安全预警通告,通报了漏洞编号为 CVE-2019-11358的原型污染漏洞。由攻击者控制的属性可被注入对象,以后或经由触发 JavaScript 异常引起拒绝服务,或篡改该应用程序源代码从而强制执行攻击者注入的代码路径。奇安信代码卫士将持续关注该漏洞进展,并第一时间为您更新该漏洞信息。javascript
文档名称 | jQuery CVE-2019-11358原型污染漏洞 |
---|---|
关键字 | jQuery,原型污染 |
发布日期 | 2019年4月23日 |
分析团队 | 奇安信代码卫士 |
3、漏洞信息java
./src/core.js 第155行:jquery
if ((options = arguments[ i ]) != null) {
options 取传入的参数 arguments[i]
,然后第158 、159 行:安全
for (name in options) { copy= options [name];
name、copy值进而能够受输入控制。网站
最后,在第183行:ui
target[name] = jQuery.extend (deep,clone, copy);
在第187行:spa
target[name] = copy;
若是 name 能够为 __proto__
,则会向上影响target 的原型,进而覆盖形成原型污染。prototype
target 在第127行:code
target = arguments[ ">0 ] || {},
漏洞自己是高危漏洞,但利用难度比较大。原型污染漏洞并未可大规模被利用的漏洞,由于漏洞要利用成功,须要攻击者很是了解具体代码的结构,须要攻击者深刻了解每一个网站和对象原型的运做方式以及这些原型如何在庞大的图式中进行分解,而后构造合适的利用方法才能成功。通常闭源的网站系统,攻击者很难深刻了解从而构造利用代码,因此几乎不受此漏洞攻击。对象
升级到最新的3.4.0版本。
$ diff jquery-2.2.4.js jquery-2.2.4-patch.js 213c213,214 < if (target === copy) { --- > // Prevent Object.prototype pollution > if (name === "__proto__" || target === copy) {
$ diff jquery-1.12.4.js jquery-1.12.4-patch.js 213c213,214 < if (target === copy) { --- > // Prevent Object.prototype pollution > if (name === "__proto__" || target === copy) {