基於圖形的 JavaScript 程式漏洞掃描器在 Node.js 庫中發現了 100 多個零日漏洞(8.30)
約翰霍普金斯大學的研究人員開發了一種基於圖形的程式碼分析工具,可以檢測JavaScript程式中的各種漏洞。
詳細情況
該工具名為 ODGen,在今年的Usenix安全研討會上釋出,並解決了限制使用基於圖形的安全工具分析JavaScript程式的一些挑戰。
研究人員透過將ODGen應用於數千個Node.js庫來證明ODGen的有效性,在那裡它發現了180個零日漏洞並收到了70個CVE。
基於圖形的方法
基於圖形的掃描器解析原始碼檔案以構建表示應用程式不同屬性和執行分支的圖形結構。然後,此圖可用於建模和查詢原始碼中的漏洞。
基於圖形查詢的方法已被證明在檢測某些程式語言中的漏洞方面非常有效,特別是一種技術,程式碼屬性圖(CPG),已被證明在保護C / C++和PHP程式碼方面是成功的。
受到圖形方法(尤其是 CPG)成功的啟發,約翰霍普金斯大學的研究人員試圖將它們應用於 JavaScript。雖然有不同的工具可以在JavaScript程式碼中查詢特定漏洞,但基於圖形的工具有望提供一個用於檢測各種漏洞的通用框架。
“JavaScript,特別是Node.js,如今正在成為一個擁有數百萬個軟體包的重要社群,”該論文的合著者,約翰霍普金斯大學電腦科學助理教授Yinzhi Cao告訴The Daily Swig。
“與此同時,許多NPM軟體包的維護較少,漏洞在NPM生態系統中普遍存在,這就是為什麼我們決定進行這項研究,使生態系統成為一個更安全的環境。” 然而,他們的初步發現表明,由於 JavaScript 語言的動態結構,CPG 在 JavaScript 中不是很有效,這使得它在執行之前解析和分析物件關係和程式分支要困難得多。
Cao表示:“CPG不對詳細的物件關係進行建模,包括(i)原型鏈和(ii)物件級資料流。因此,很難應用 CPG 來檢測特定於 JavaScript 的漏洞,例如原型汙染和內部屬性篡改。而且很難在CPG中對細粒度的物件級資料流進行建模。”
物件依賴關係圖
在他們的論文中,研究人員提出了物件依賴圖(ODG)作為從JavaScript程式碼構建圖形的新方法。ODG 使用 CPG 的一些元件,例如抽象語法樹 (AST),並新增了特定於 JavaScript 的功能,包括物件之間的細粒度資料依賴關係。因此,研究人員建立了ODGen,這是一種用於建立和查詢ODG的工具。
“我們提出的ODGen抽象地解釋JavaScript程式碼並生成所謂的物件依賴圖來捕獲包括物件關係在內的動態特徵,以便基於圖形查詢的方法可以輕鬆獲取此類資訊並檢測漏洞,”Cao說。
研究人員設計了ODGen來檢測應用程式和軟體包級別的漏洞。他們針對330個記錄在案的漏洞對該工具進行了測試,這些漏洞跨越了16個類別,包括跨站點指令碼(XSS)、伺服器端和客戶端請求偽造 (SSRF/CSRF)、 SQL 注入、原型汙染和命令注入。
該工具能夠以非常高的準確度檢測13種型別的漏洞,發現了330個漏洞中的302個漏洞。
他們透過抓取300000個NPM包並應用ODGen和圖形查詢來檢測查詢,從而擴充套件了他們的測試。ODGen報告了近3000個安全漏洞,研究人員驗證了其中的264個,它們存在於每週下載量超過1000次的庫中。他們能夠確認並報告180個安全漏洞,其中許多漏洞存在於Web應用程式中廣泛使用的庫中。在發現的漏洞中,有70個被分配了CVE。
ODGen展示了需要做多少工作來保護開源JavaScript生態系統,以及現有工具的調整如何有助於開發整體方法來增強Node.js 庫的安全性。
Cao說,在未來,該團隊可能會將ODGen擴充套件到Web應用程式中使用的其他程式語言,包括PHP和Java。
參考連結
https://portswigger.net/daily-swig/graph-based-javascript-bug-scanner-discovers-more-than-100-zero-day-vulnerabilities-in-node-js-libraries