# Exploiting ML algorithms for Efficient Detection and Prevention of JavaScript-XSS Attacks in Android Based Hybrid Applications :::info Khalid, U., Abdullah, M., & Inayat, K. (2020). Exploiting ML algorithms for Efficient Detection and Prevention of JavaScript-XSS Attacks in Android Based Hybrid Applications. arXiv preprint arXiv:2006.07350. ::: 這一篇論文對於我的研究只有一點點用,大概補足了一些我對Android的XSS漏洞的認識。主要是在利用一些feature,訓練出能夠檢測有無XSS攻擊的模型 ## Introduction 首先,很多的手機App中都會使用WebView這個Component,也就是能夠直接嵌入一個mini browser在App中而不需要另外開啟外部的Browser才能瀏覽網頁,所以JS語言就能夠和Java語言互動,問題在於當從 JavaScript 呼叫 Java 時,攻擊者會將惡意 JavaScript 程式碼儲存在網頁中,當網頁在應用程式中開啟時,然後在 WebView 中註冊一個物件。 首先,攻擊者透過 JavaScript 存取該對象,並透過該對象存取該應用程式的本機方法,攻擊者可以透過觸發本機方法內的重要內建函數輕鬆取得不同的智慧型手機資源。 ## Contribution * 自行創建一個Dataset,並且從500個不同的Apps中extract出7個不同的feature * 訓練7種不同的ML 模型: Evolutionary-Support Vector Machine (E-SVM), Neural Network, Naive Bayes, Support Vector Machine(SVM), Bagging, Random Forest and J48 * 根據實驗結果給出F1-Score和執行時間,結果顯示Random Forest是最好的模型 ## Background * WebView 這個component的存在理由如上所述,其中會用到幾的API: ``` setJavaScriptEnabled API addJavascriptInterface API loadUrl API ``` 第一個是enable可以使用JS,第二個是註冊Java物件,第三個就是實際把網頁load進來 * Sandbox ![圖片](https://hackmd.io/_uploads/r1C5aaRMC.png) 如上圖,一般來說webview的瀏覽是會經過sandbox,確保可以控制web browser的access,讓他和本地資源不會共享;網頁和網頁之間要隔離,而網頁和主系統之間也會隔離 * Bypassing sandbox mechanism ![圖片](https://hackmd.io/_uploads/BkBYapCGC.png) 從上圖可以看出,儘管WebView中存在沙箱安全機制來保護行動裝置本地資源免受JavaScript攻擊,但WebView本身借助WebView提供的API繞過了沙箱機制。 這創建了一條路徑,JavaScript 可以輕鬆地與本機 Java 通訊。 並且攻擊者可以觸發Java的不同類別方法發動XSS攻擊,透過原生Java程式碼存取行動裝置的重要功能包括本機資源。 * 哪些類型的易受攻擊的 API 可以透過 Java 物件觸發? 作者有整理出來一個表如下: ![圖片](https://hackmd.io/_uploads/SJmIkA0zA.png) ## Proposed Method 現在的重點是要如何分辨一個App他啟動了webview之後,是否會造成XSS攻擊,作者提出了由四個Level組成的偵測框架以及三個Layers的預防框架 * Detection Framework ![圖片](https://hackmd.io/_uploads/Hy-Je0AzC.png) * Level 1: 蒐集資料與前處理 * Level 2: 10-fold cross validation去訓練模型 * Level 3: 結果評估以及預測有無攻擊 * Level 4: 利用Selection Algorithm評估各個features的重要性是多少 * Prevention Framework ![圖片](https://hackmd.io/_uploads/Bkx7WA0f0.png) 1. 首先,當一個App在Webview中啟動了惡意網站,並且call了addJavaScriptInterface() API 2. 在完成註冊之前,有關Java物件的資訊進入Threat Prevention Unit。 3. 然後特徵提取器從Threat Prevention Unit提取Java物件的特徵並將特徵資訊提供給檢測單元。 4. 偵測單元取得所有特徵,並使用 ML 演算法對這些特徵進行分類,如前所述。 之後,它將最終結果(是否攻擊\[Yes / No\])發送給威脅預防單元,因此檢測單元透過這種方式攔截對addJavaScriptInterface() API的呼叫。 5. 如果Threat Prevention Unit從檢測單元接收到“是”,則建議的方法呼叫警報應用程式:否則,它繼續進行步驟(9),以自動允許,然後繼續進行步驟(10)以完成Jave物件註冊。 6. 警報應用程式警告使用者有關威脅的訊息,其中顯示有關攻擊網頁名稱、物件名稱、物件呼叫的安全敏感 API 的資訊。 7. 使用者回覆警報應用程式以決定是否停用Java物件。 8. 警報應用程式將使用者的決定轉發給威脅預防單元。 9. Threat Prevention Unit根據使用者的決定進一步決定是否停用該物件。 10. 如果Threat Prevention Unit的決定是“是”,則它允許物件註冊並物件取得 Java 類別的存取方法,從中可以存取不同的移動庫。 11. 如果威脅防護單元做出「否」決定,則會停用 Java 物件並封鎖網站。 ## Experiment ### Tool RapidMiner Softwrare Platform ### Dataset 作者自行提出一個Dataset叫做`APK_XSS_ATTACK`,為了收集基準數據,創建了演示受害者應用程式並對其發起了即時攻擊,然後在運行時記錄了這些即時攻擊。 作者取得了 17 個即時攻擊條目並記錄了 XSS 攻擊的模式,這樣我們產生了 444 個原始 XSS 攻擊以滿足標準資料集要求。 在此資料集中,攻擊比例為 50%。 作者收集了 20 個 APK 的 460 個樣本。而提取的features如下 ![圖片](https://hackmd.io/_uploads/S15ZSC0f0.png) ### Result * 在實驗中,從Selection Algorithm中的數據如下可以知道,API Name這個Feature是最重要的,其次是Permission或是Location ![圖片](https://hackmd.io/_uploads/BkcrHARfA.png) * 從F-Score和Accuracy可以知道,最好的演算法是Random Forest;其次是E-SVM ![圖片](https://hackmd.io/_uploads/r13hH0AGR.png) 但從花費時間來看,E-SVM花的時間是最多的 ![圖片](https://hackmd.io/_uploads/SJn1IARf0.png)