每個Android應用程式都包含了數個元件,其中一個稱為AndroidManifest.xml或Manifest配置文件。這個檔案中包含了應用程式的基本資訊,是系統執行應用程式程式碼必須要有的資料。我們發現一個和此檔案相關的漏洞,可能會導致受影響手機陷入重新啟動的無限迴圈,讓手機變得無法使用。
Manifest資源配置文件漏洞
這個漏洞會透過兩種不同的方式導致作業系統崩潰。
第一種牽涉到超長字串和記憶體分配。一些應用程式可能會使用DTD技術(文件類型定義,Document Type Definition)在其XML檔中包含了超長字串。當此字串被分配給AndroidManifest.xml內的標籤(如權限名稱、label、活動(Activity)名稱)引用時,PackageParser會需要記憶體來解析這XML檔。然而,如果它需要的記憶體比可使用的還多時,PackageParser會崩潰。這會觸發連鎖反應,讓所有正在執行的服務停止,整個系統會因此重新開機。
第二種方法牽涉到APK檔和intent-filter,它用來宣告服務或活動(Activity)可以做的事情。如果Manifest資源配置文件內包含一個活動(Activity)帶有這此intent-filter定義,會在桌面建立一個圖示:
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
如果有許多活動(Activity)用此intent-filter定義,在安裝後會建立相同數量的圖示在主畫面中。如果數量太多。這APK檔 就會導致重新開機迴圈。
如果活動(Activity)的數量大於10,000:
- 在Android 4.4上,桌面管理程序會進行重開機。
- 在Android L上,PackageParser會崩潰和重開機。不正常的APK檔會被安裝,但不會顯示圖示。
如果活動(Activity)的數量超過100,000,手機會陷入重新開機迴圈。 繼續閱讀