標籤:

聽老外講解如何將XSS轉化為RCE

前言

Black Hat 2017可謂成果豐碩,除了各種安全工具和理論出現之外,也出現了許多新的安全研究方向,比如Doyensec的聯合創始人Luca Carettoni就介紹了關於Electron安全方面的新思路 twitter.com/lucacaretto 。為了對他的這個思路有更深入的了解,我在會後和他討論了可能基於Electron應用程序的設計漏洞和運行漏洞,特別是在安全防護框架到位的情況下,黑客如何繞過這些漏洞,比如,也可以通過跨站腳本來呈現不可信內容來實現可靠的遠程執行代碼(RCE)。

了解nodeIntegration標誌

其實對信息安全方面有所了解的開發人員都知道,在整合了Node.js的應用中直接呈現不受信任的遠程或本地內容是非常危險的。正是出於這一方面的考慮,Electron框架提供了兩種不同的機制來幫助應用程序在「沙盒環境」中呈現不受信任的資源:

BrowserWindow機制

WebView機制

在上面的例子中,將nodeIntegration標誌設置為false。即使在渲染器進程中運行了Node.js引擎,頁面中運行的JavaScript將無法訪問全局引用。

尋找繞過nodeIntegration的方法

現在應該明白為什麼nodeIntegration是框架的關鍵安全相關設置,這種機制中的漏洞可能會導致完全的主機攻擊,簡單地渲染不受信任的網頁。作為一個網路極客,我使用這種漏洞將傳統的XSS變成了RCE。由於所有Electron應用程序都與框架代碼捆綁在一起,因此在整個生態系統中解決這些漏洞也是複雜的。

在我的研究中,我已經廣泛分析了所有的項目代碼變化,以發現先前發現的實際繞過案例,目的是研究Electron的設計漏洞。只有掌握了這些知識,才能找到繞過漏洞的辦法。

通過研究官方文檔,我很快就發現了Electron的「glorified」JavaScript API引起的與標準瀏覽器的顯著偏差。當創建一個新窗口時,Electron返回一個BrowserWindowProxy的實例。該類可用於操縱子瀏覽器窗口,從而顛覆同源策略(SOP)。

繞過SOP的第一種辦法:

繞過SOP的第二種辦法:

繞過SOP的第二種辦法使用的評估機制可以用下圖解釋:

另外的源代碼審查揭示了存在特權的URL(類似於瀏覽器的特權區域)。通過設計將SOP-bypass與在 lib/renderer/init.js中定義的特定特權URL相結合,我意識到我可以覆蓋nodeIntegration設置。

包括影響1.6.7版本之前的所有Electron發布的nodeIntegration繞過的簡單但可靠的Poc:

2017年5月10日,我通過Electron郵件向維護者報告了此問題。在幾個小時之內,我收到了一個答覆,他們已經在修復了,因為特權的chrome-devtools://在我報告的前幾天已經被發現。

緩解措施

1.升級到最新的Electron版本,因為Electron使用Chromium和Node.js,影響這些組件的漏洞可能會影響應用程序的安全性。通過將Electron更新到最新版本,你可以確保關鍵漏洞(例如nodeIntegration繞過)已經被修補,並且不能被利用來濫用你的應用程序。

2.採用安全編碼的方式,你的應用程序的第一道防線是你自己的代碼。通常的網路漏洞(如XSS)對Electron的安全性影響較大,因此強烈建議採用安全軟體進行應用搭建並執行定期的安全測試。

3.了解所使用的的框架,目前流行的瀏覽器所採用的特定規則以及安全機制並不能適用於Electron(例如同源策略),應採取深度防範機制來緩解這些漏洞。詳細信息,請參Electron木安全演示和Electron安全清單的白皮書。

4.使用最新的「沙箱」實驗功能,即使nodeIntegration被禁用,Electron的當前實現也不能完全緩解載入不可信資源引入的所有風險。因此,建議使用利用Chromium的沙箱功能。沙箱渲染器沒有運行Node.js環境(除了預載入腳本之外),渲染器只能通過IPC將任務委派給主進程來對系統進行更改。請注意,目前<webview>標籤等還不支持沙箱檢測。

本文翻譯自:blog.doyensec.com/2017/ ,如若轉載,請註明來源於嘶吼:4hou.com/technology/710 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

XcodeGhost到底會不會盜取icloud密碼?
概念研究:新型攻擊可以修改已發送的電子郵件內容
如何從物理隔離設備里偷出數據?研究人員再次花式秀技
是否有合適的工具(隨身攜帶)快速抹除快遞單等包含敏感信息?
看我如何打造Android滲透測試環境

TAG:信息安全 |