zoukankan      html  css  js  c++  java
  • jQuery CVE-2019-11358原型污染漏洞分析和修复建议

    一、安全通告

    jQuery官方于日前发布安全预警通告,通报了漏洞编号为 CVE-2019-11358的原型污染漏洞。由攻击者控制的属性可被注入对象,之后或经由触发 JavaScript 异常引发拒绝服务,或篡改该应用程序源代码从而强制执行攻击者注入的代码路径。奇安信代码卫士将持续关注该漏洞进展,并第一时间为您更新该漏洞信息。

    二、文档信息

    文档名称jQuery CVE-2019-11358原型污染漏洞
    关键字 jQuery,原型污染
    发布日期 2019年4月23日
    分析团队 奇安信代码卫士

     三、漏洞信息

    3.1 漏洞分析

    ./src/core.js 第155行:

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

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

    for (name in options) {                      
                          copy= options [name];

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

    最后,在第183行:

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

    在第187行:

    target[name] = copy;

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

    target 在第127行:

    target = arguments[ ">0 ] || {},

    3.2 风险评估

    漏洞本身是高危漏洞,但利用难度比较大。原型污染漏洞并未可大规模被利用的漏洞,因为漏洞要利用成功,需要攻击者非常了解具体代码的结构,需要攻击者深入了解每个网站和对象原型的运作方式以及这些原型如何在庞大的图式中进行分解,然后构造合适的利用方法才能成功。一般闭源的网站系统,攻击者很难深入了解从而构造利用代码,所以几乎不受此漏洞攻击。

    四、修复方案

    (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) {
  • 相关阅读:
    display:block;inline;inline-block大总结
    img图片inline-block总结
    定时器
    获取样式
    UmiJS
    vue 点击当前路由重新加载该路由
    Support for the experimental syntax 'decorators-legacy' isn't currently enab -- 装饰器@
    js 改变匹配到的字符串的颜色
    with
    页面从输入 URL 到页面加载显示完成
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/10781664.html
Copyright © 2011-2022 走看看