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

原文地址:https://www.cnblogs.com/h2zZhou/p/10781664.html

时间: 2024-10-08 23:28:38

jQuery CVE-2019-11358原型污染漏洞分析和修复建议的相关文章

定心丸!ZipperDown漏洞分析与修复建议

近日,盘古实验室对外披露了ZipperDown漏洞,该漏洞是盘古团队针对不同客户的iOS应用安全审计的过程中发现的,大约有10%的iOS应用会受到此漏洞的影响. 利用此漏洞可以做很多事情,例如实现目录遍历攻击和App Container目录中任意文件覆盖风险--影响究竟有多大,取决于具体App和对应取得的权限. ZipperDown获得大量媒体聚焦的同时,也吸引了大量不法分子的目光,一场安全风暴隐约即将到来. 那如何防止ZipperDown漏洞带来的破坏呢?网易云易盾安全专家结合目前披露的信息以

ECSHOP v2.7.3注入漏洞分析和修复

测试版本 漏洞条件 漏洞利用 产生原因 修复方案 1.测试版本 v2.7.3 RELEASE 20121106(最新) v2.7.3 RELEASE 20120411 2.漏洞条件 需登录到后台 3.漏洞利用 1) 登陆到台后,选择模板管理,语言项编辑,搜索“用户信息” 为什么要搜索“用户信息”,还可以搜索其它的吗? 答案是搜索languages\zh_cn\user.php文件里任何一个变量都可以 2) 添加如下后门,将用户信息改为 用户信息${${fputs(fopen(base64_dec

Jenkins-CVE-2016-0792漏洞利用及修复建议

漏洞概述: 国外网站 Contrast Security 于2016年2月24日在公开了Jenkins近日修复的一个可通过低权限用户调用 API 服务致使的命令执行漏洞详情.通过低权限用户构造一个恶意的 XML 文档发送至服务端接口,使服务端解析时调用 API 执行外部命令. 利用方法: 1. 登陆低权限用户test 权限为:Overall的read权限+Job的create权限 将下面xml数据包post到创建项目页面,项目名称任意命名,这里暂取qt-sec ,完整链接如下: http://1

【网络安全】Snort漏洞分析规则提取验证全流程讲述

本文以CVE 2014-6034为例进行漏洞分析与验证,包括环境搭建抓包,特征提取验证各个环节. 1.下载软件: ManageEngine OpManager 9 地址:http://manageengine-opmanager.soft32.com/ Kali Linux https://www.kali.org/downloads/ 我下载在是Kali Linux 64 bit ISO 1.0.9a ISO 2.环境搭建 ManageEngine OpManager 9 直接点击安装即可,安

Java反序列化漏洞分析

相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 http://www.tuicool.com/articles/ZvMbIne http://www.freebuf.com/vuls/86566.html http://sec.chinabyte.com/435/13618435.shtml http://www.myhack58.com/Articl

JavaScript服务器编程(对象属性枚举中应当避免原型污染问题)

前面文章中讨论了JS开发中对象属性枚举的ES3和ES5方案并给出了一组常用工具函数,其实,企业开发中真正应用时还存在不少问题.本文想基于前文进一步探讨一下有关原型污染的问题.由于JS的先天不足,有关原型污染背后隐藏着一个大的"故事",以后我们的文章中还要涉及其中一些情节. 问题 前面在讨论使用in运算符检测对象中是否存在属性的方案,但是通过所举的示例也发现一个问题,例如: console.log('"ID" in contacts: ',"ID"

PCMan FTP Server缓冲区溢出漏洞分析与利用

简要介绍 这个软件是台湾国立阳明大学医学系的一个学生在大四的时候写的,这个漏洞是有CVE的(CVE-2013-4730),软件应该还挺普及的,这是一个缓冲区溢出漏洞 具体exp可以点这里 实验用poc(其实这里直接对USER命令溢出都是可以的,即不用知道账号密码即可远程代码执行,USER命令的buf距离返回地址是2000) import socket as s from sys import argv # if(len(argv) != 4): print "USAGE: %s host <

1.5 webshell文件上传漏洞分析溯源(1~4)

webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中 上传1.png  ---->   我们查看页面元素 ----->   ,也没有前端验证 看来只能用burp抓包来改包绕过,我们修改1.php  ---->   1.php .png ,然后上传抓包改包 0x20 -----> 0x00 webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中

Linux kernel 4.20 BPF 整数溢出漏洞分析

分析的代码为linux-4.20-rc3版本:https://elixir.bootlin.com/linux/v4.20-rc3/source.因为该漏洞影响`Linux Kernel 4.20rc1-4.20rc4`,主要Linux发行版并不受其影响. 一.简介 BPF的全称是Berkeley Packet Filter,字面意思意味着它是从包过滤而来,该模块主要就是用于用户态定义数据包过滤方法:从本质上我们可以把它看作是一种内核代码注入的技术,BPF最大的好处是它提供了一种在不修改内核代码