46. 某 Android 應用的 WebView 為方便除錯,沒有關閉「JavaScript 介面」,暴露 Java 物件給載入的網頁。攻擊者誘導使用者開啟惡意網頁,該網頁呼叫被暴露的 Java 方法以讀取本機檔案與敏感資料。這種攻擊方法稱之為下列何項?
(A) 預設憑證信任(Trust All Certificates)
(B) WebView 注入攻擊(WebView Injection)
(C) Session 攻擊
(D) NFC 重送攻擊
統計: A(8), B(37), C(4), D(0), E(0) #3671682
詳解 (共 1 筆)
這題的正確答案是:
(B) WebView 注入攻擊 (WebView Injection)
解析
這題描述的是 Android 開發歷史上非常經典的 addJavascriptInterface 遠端代碼執行漏洞 (RCE)。
攻擊原理:
-
橋接機制: Android 的 WebView 元件提供了一個 addJavascriptInterface 方法,允許開發者將 Java 物件映射到網頁的 JavaScript 中,讓網頁可以呼叫 App 的原生功能(Native Code)。
-
漏洞成因: 在 Android 4.2 (API Level 17) 以前,這個機制沒有權限控管。攻擊者只要能讓 WebView 載入惡意網頁,網頁中的 JavaScript 就可以透過這個介面,使用 Java 的反射機制 (Reflection) 去呼叫該 Java 物件繼承的所有方法(包含 Runtime.getRuntime().exec())。
-
後果: 攻擊者可以直接在手機上執行任意指令(如讀取 SD 卡檔案、上傳通訊錄、安裝木馬),造成嚴重危害。
雖然在 Android 4.2 之後增加了 @JavascriptInterface 註解來限制可被呼叫的方法,但如果開發者為了除錯方便而忽略這些安全措施(如題目所述),或是不當暴露了敏感的 Java 物件,依然會遭到 WebView Injection 攻擊。
其他選項為什麼不符合?
-
(A) 預設憑證信任 (Trust All Certificates):
-
這屬於 網路傳輸層 的安全問題。是指 App 在連線 HTTPS 時,程式碼寫死「信任所有憑證」,導致駭客可以透過中間人攻擊 (MitM) 攔截數據。這跟 JavaScript 或 WebView 內部邏輯無關。
-
-
(C) Session 攻擊:
-
這是針對 身分驗證 的攻擊(如 Session Hijacking, Fixation),通常是竊取 Cookie 或 Token,而非利用 WebView 的介面漏洞來執行程式碼。
-
-
(D) NFC 重送攻擊:
-
這是針對 近場通訊 (NFC) 硬體的攻擊,常見於門禁卡或行動支付複製,與網頁瀏覽器 (WebView) 完全無關。
-