這項研究的重點是原型污染脆弱性,這是一種“新”類型的安全脆弱性,最初是在2018年發現的,尚未深入研究。漏洞利用了JavaScript的原型設計。通過修改本機對象(例如對象)的原型(大多數其他對象)繼承屬性和方法,取決於特定應用程序的邏輯,可以升級到幾乎任何其他Web漏洞。
我們收集了包含真實詞原型污染漏洞的JavaScript代碼,搜索了諸如GitHub Advisory和其他來源之類的漏洞數據庫。為了確保收集的示例實際上是脆弱的,我們為每個脆弱的功能寫了一個簡單的概念證明。我們運行了針對脆弱應用程序的靜態分析工具。在漏洞數據集中,我們選擇了一些案例研究,我們對這些案例研究進行了詳細分析,以解釋導致漏洞的不同代碼模式。選擇這些案例研究以顯示有趣的結果,使我們能夠強調每個工具的優勢和局限性。
ODGEN/OBJLUPANSYS的新方法基於對象依賴圖,該方法基於原型鏈,成功地模擬對象查找,幾乎可以檢測所有脆弱性情況。但是,噹噹前的實驗實現會受到某些代碼模式時的錯誤。在分析大包裝或某些模式時,它還遭受了嚴重的性能問題。同樣,當針對易受傷害的函數的修補版本執行時,非常容易標記誤報。
SEMGREP規則並未涵蓋所有案例,例如直接分配,因為包括此案例的差異而沒有很高的假陽性率。 SEMGREP引擎僅提供有限的經術內數據流分析,並且正如預期的那樣,不能總是檢測出分佈在不同功能上的漏洞(例如,間接遞歸調用)。規則標記許多誤報在針對精緻脆弱功能的修補版本執行時,因為大多數緩解技術甚至都沒有考慮。
CodeQL幾乎可以識別收集的所有漏洞示例。被認為的查詢似乎寫得很好,遇到的問題很可能是封閉源引擎的限制。對於錯誤的帖子,考慮了大多數緩解技術,因此CodeQL查詢的性能明顯優於其他工具。
論文pdf中的更多細節