Custom 權限 - First One Wins
過去的研究曾指出Custom權限有洩漏使用者資料的問題,惡意軟體可以改變Custom權限的保護層級,以至於任何惡意軟體皆可存取分享的資料。
例如:現在有應用程式A和惡意軟體B,惡意軟體B可以預先定義一個與應用程式A一模一樣的Custom權限名稱,且將保護層級設為"Normal",並搶先在應用程式A之前安裝,由於Android系統採 "First One Wins"策略,所以惡意軟體B定義的Custom權限將能贏得"Race",搶先於應用程式A原來的定義而導致保護層級改變。
測試環境:
Sony Z tablet -> Android 5.1.1
測試條件:
#應用程式B
宣告權限,欲使用應用程式A的Service。
#應用程式C
定義一個惡意的權限,與應用程式A所定義的名稱一模一樣,測試是否能夠覆蓋應用程式A的custom權限。
測試步驟如下:
1.先安裝應用程式C
測試結果:
安裝應用程式C的時候一切正常,但是再安裝應用程式A時,就出現「安裝重複權限」的錯誤訊息INSTALL_FAILED_DUPLICATE_PERMISSION
結論:
從Android 5.0開始,若要定義相同名稱的權限,必須使用相同金鑰簽署應用程式!若不同,則出現以上錯誤訊息。此修正避免了惡意軟體覆蓋原有custom權限的保護層級,但仍然是First One Wins的策略,所以,仍然具有干擾使用者的效果存在。
例如:現在有應用程式A和惡意軟體B,惡意軟體B可以預先定義一個與應用程式A一模一樣的Custom權限名稱,且將保護層級設為"Normal",並搶先在應用程式A之前安裝,由於Android系統採 "First One Wins"策略,所以惡意軟體B定義的Custom權限將能贏得"Race",搶先於應用程式A原來的定義而導致保護層級改變。
參考文獻:
Nikolay Elenkov. (2014) Android Security Internals:An In-Depth Guide to Android's Security Architecture. O’Reilly Media.
Nikolay Elenkov. (2014) Android Security Internals:An In-Depth Guide to Android's Security Architecture. O’Reilly Media.
Sony Z tablet -> Android 5.1.1
測試條件:
#應用程式A
定義權限,分享此Service給應用程式B,將權限的保護層級設為"signature"!
定義權限,分享此Service給應用程式B,將權限的保護層級設為"signature"!

#應用程式B
宣告權限,欲使用應用程式A的Service。

#應用程式C
定義一個惡意的權限,與應用程式A所定義的名稱一模一樣,測試是否能夠覆蓋應用程式A的custom權限。

測試步驟如下:
1.先安裝應用程式C
2.再安裝應用程式A
3.最後才安裝應用程式B
3.最後才安裝應用程式B
測試結果:
安裝應用程式C的時候一切正常,但是再安裝應用程式A時,就出現「安裝重複權限」的錯誤訊息INSTALL_FAILED_DUPLICATE_PERMISSION

結論:
從Android 5.0開始,若要定義相同名稱的權限,必須使用相同金鑰簽署應用程式!若不同,則出現以上錯誤訊息。此修正避免了惡意軟體覆蓋原有custom權限的保護層級,但仍然是First One Wins的策略,所以,仍然具有干擾使用者的效果存在。
留言
張貼留言