攻擊者能向 Android 的簽名應用中注入惡意程式碼
在上週 Android 修復的四十多個漏洞中,有一個漏洞能允許攻擊者繞過簽名驗證機制而直接向程式注入惡意程式碼。據研究人員介紹,透過該方法能夠在目標裝置上實現提權操作,同時還能避開反病毒程式的檢測。
錯誤是今年夏天由 GuardSquare 公司 CTO Eric Lafortune 發現的,他在 7 月份時向 Google 報告了該問題(CVE-2017-13156),在本月的 Android 系統更新中 Google 對此進行了修復,並於上週四對外公開了漏洞。
作為研究的一部分,Lafortune 還編寫了一個 PoC 工具 Janus,能夠將惡意的 DEX 檔案注入到 APK 應用中。
“攻擊者能將惡意程式碼注入到正常應用中,任何下載並安裝的使用者都會受到感染。” Lafortune 解釋道。
“任何 Android 應用 - 從銀行應用、遊戲應用到 Google 地圖應用 - 都有可能成為目標。一旦使用者安裝了受感染的程式,那麼攻擊者將會獲得與應用程式相同的系統許可權。這意味著攻擊者有可能竊取銀行證書、讀取訊息記錄並進一步感染目標裝置。” Lafortune 補充說。
對於系統版本低於 7.0(Nougat)以及 APK 簽名方案為 v1 的 Android 裝置都受到了影響,而簽名方案已更新為 v2(16 年 7 月份引入)的裝置則不受影響。
在 Google 的描述中,APK 簽名能提升應用的驗證速度,並且還透過檢測 APK 是否被更改來加強完整性方面的保護。
Lafortune 表示,藉助 Janus 工具可以使系統在驗證 APK 簽名時自動忽略檔案中新增的那些額外位元組。
“一方面,APK 檔案是一個 zip 壓縮文件,可以在 zip 標識頭前包含任意的位元組。” 研究人員解釋。“另一方面,DEX 檔案的末尾也可以包含任意的位元組,即在字串、類、方法等常規定義部分之後新增內容。因此,修改後的檔案可以同時是有效的 APK 檔案和有效的 DEX 檔案。”
藉助 Janus 工具之所以能繞過驗證,是因為受影響的簽名方案按相關標識頭開始計算或驗證應用程式的簽名。
由於使用 v2 方案進行 APK 簽名的應用不會受到影響,因此 Lafortune 建議開發人員應使用 v2 簽名方案以確保程式不被篡改。
原文連結:https://threatpost.com/android-flaw-poisons-signed-apps-with-malicious-code/129118/
本文由看雪翻譯小組 BDomne 編譯