Android客製化權限會洩漏使用者資料,上萬應用程式受此弱點影響

Anrdoid存取控制政策的關鍵部分是權限。要存取Android設備上的資源,應用程式需要請求並被授予特定權限。但是,除了作業系統所指定的權限外,應用程式可以定義自己的客製化權限。一般來說,這樣做是為了保護應用程式本身的功能或資料。

Mobile 手機

 像這樣的客製化權限通常被定義在「Signature」或「signatureOrSystem」保護層級。這在Android開放原始碼專案(AOSP)文件內的定義為:

signature當有應用程式要求此權限時,系統只會給於和宣告該權限的應用程式使用相同憑證的應用程式。如果憑證符合,系統會自動給予權限而不通知使用者或詢問使用者是否批准。
signatureOrSystem當有應用程式要求此權限時,系統只會給於存在Android系統影像檔或是和宣告該權限的應用程式使用相同憑證的應用程式。請避免使用此選項,因為Signature保護層級應該足以滿足大多數需求,而且無論應用程式工作在哪裡都可以正常作用。signatureOrSystem權限只用在某些特殊情況,當有多個廠商內建應用程式到系統影像檔中,而且需要特別地去分享特定功能,因為它們是被一起建置的。

這讓Android開發者認為只有系統應用程式或擁有相同簽章的應用程式(可能是由同一個開發者所製造)才能夠存取這些權限。所以就可能不會加上額外的存取控制。但事實並非如此。

Android作業系統只用名稱來追蹤這些客製化權限。一旦權限被定義,其他的應用程式就無法進行修改。假設一個知名的應用程式「A」中用signature保護層級來定義權限permission-A用來保護自己的資料。但讓我們假設在安裝「A」之前,使用者就已經安裝了惡意應用程式B。如果B是設計來從應用程式「A」中竊取資料,它可以在「A」之前就先建立permission-A,然後應用程式「B」就有permission-A的權限。一旦應用程式「A」被安裝,「B」就擁有了能夠讀取應用程式「A」被保護資料的權限。

 

趨勢科技發現約有10,000個應用程式可能會受到此弱點的影響。我們不會透露有哪些應用程式有此弱點,但是趨勢科技快速檢查了有弱點應用程式後,包括了:

 

  • 一個熱門的網路商店會洩露其網路瀏覽歷史記錄。
  • 一個熱門的聊天應用程式會洩露其使用者的應用程式內購買。
  • 一個熱門的社群網路可以透過其應用程式插入假訊息。

 

在存取他們的活動/接受器/服務/供應商時,開發者不應該完全依賴保護層級。作業系統有提供幾個像getCallingUidgetCallingPackage的功能,可以用來識別做出上述要求的應用程式,並且要加上必須的存取控制。

趨勢科技已經通知Google的Android安全小組這個問題。

 

@原文出處:Android Custom Permissions Leak User Data作者:Weichao Sun(行動威脅分析師)額外分析來自Veo Zhang

FB_banner0331-2