• 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) {
  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/10781664.html
Copyright © 2020-2023  润新知