jQuery CVE-2019-11358原型污染漏洞分析和修復建議

1、安全通告

jQuery官方於日前發佈安全預警通告,通報了漏洞編號爲 CVE-2019-11358的原型污染漏洞。由攻擊者控制的屬性可被注入對象,以後或經由觸發 JavaScript 異常引起拒絕服務,或篡改該應用程序源代碼從而強制執行攻擊者注入的代碼路徑。奇安信代碼衛士將持續關注該漏洞進展,並第一時間爲您更新該漏洞信息。javascript

2、文檔信息

文檔名稱 jQuery CVE-2019-11358原型污染漏洞
關鍵字 jQuery,原型污染
發佈日期 2019年4月23日
分析團隊 奇安信代碼衛士

 3、漏洞信息java

3.1 漏洞分析

./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.2 風險評估

 

漏洞自己是高危漏洞,但利用難度比較大。原型污染漏洞並未可大規模被利用的漏洞,由於漏洞要利用成功,須要攻擊者很是瞭解具體代碼的結構,須要攻擊者深刻了解每一個網站和對象原型的運做方式以及這些原型如何在龐大的圖式中進行分解,而後構造合適的利用方法才能成功。通常閉源的網站系統,攻擊者很難深刻了解從而構造利用代碼,因此幾乎不受此漏洞攻擊。對象

 

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) {
相關文章
相關標籤/搜索