当前位置:首页 > 网络安全 > 安全通告 > 详情
安全漏洞预警通告-jQuery原型污染漏洞(CVE-2019-11358)预警
2019年04月24日   

  1、基本情况

  jQuery存在原型污染漏洞,CVE编号:CVE-2019-11358。攻击者通过控制属性来注入对象,然后经由触发JavaScript异常引发拒绝服务,或篡改该应用程序源代码从而强制执行攻击者注入的代码路径。

  2、攻击原理

  jQuery是美国John Resig程序员的一套开源、跨浏览器的JavaScript库。该库简化了HTML与JavaScript之间的操作,并具有模块化、插件扩展等特点。 jQuery官方发布安全预警通告,通报了漏洞编号为 CVE-2019-11358的原型污染漏洞。由攻击者控制的属性可被注入对象,之后或经由触发 JavaScript 异常引发拒绝服务,或篡改该应用程序源代码从而强制执行攻击者注入的代码路径。

  下面是对该漏洞的分析:

  1)./src/core.js 第155行:

  if ((options = arguments[ i ]) != null) {

  2)options 取传入的参数 arguments[i],而后第158 、159 行:

  for (name in options) {

  copy= options [name];

  name、copy值进而可以受输入控制。

  3)最后,在第183行:

  target[name] = jQuery.extend (deep,clone, copy);

  4)在第187行:

  target[name] = copy;

  如果 name 可以为 __proto__,则会向上影响target 的原型,进而覆盖造成原型污染。

  5)target 在第127行:

  target = arguments[ 0 ] || {},

  3、影响范围

  受影响的版本:

  jQuery version 1.x

  jQuery version 2.x

  jQuery version 3.x

  4、处置建议

  因修复难度较低,也不影响正常功能,建议尽快修复。修复方案如下:

  1) jQuery version 3.x 修复方案:

  升级到最新的3.4.0版本。

  2) jQuery version 2.x 修复方案:

  $ 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) {

  3) jQuery version 1.x 修复方案:

  $ 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) {

  5、参考链接

  1) https://nvd.nist.gov/vuln/detail/CVE-2019-11358

  2) https://blog.jquery.com/2019/04/10/jquery-3-4-0-released/