1. 程式人生 > >Android靜態安全檢測 -> 自定義許可權的保護級別

Android靜態安全檢測 -> 自定義許可權的保護級別

自定義許可權的保護級別 - protectionLevel屬性

一、Manifest檔案中許可權相關的知識

1. <uses-permission>標籤

【1】語法定義

【2】屬性

android:name    可以是系統的許可權名稱,也可以是其他APP通過<permission>標籤宣告的許可權名稱(用於兩個應用之間的互動)

android:maxSdkVersion   標註該許可權所支援的最大API版本號

2. <permission>標籤

【1】語法定義

【2】屬性

android:name  自定義的許可權名稱

android:label   對許可權的簡短描述

android:icon   用來標識許可權的圖示

android:description   對許可權的更加詳細的描述

android:permissionGroup   許可權所屬許可權組的名稱

android:protectionLevel許可權的保護等級

     - normal

       屬性的預設值,代表低風險許可權,只要申請了就可以使用(在AndroidManifest.xml中新增<uses-permission>標籤),安裝時不需要使用者確認

     - dangerous

       高風險許可權,安裝時需要使用者的確認才可使用

     - signature

       只有當申請許可權的應用程式的數字簽名與宣告此許可權的應用程式的數字簽名相同時(如果是申請系統許可權,則需要與系統簽名相同),才能將許可權授給它

     - signatureOrSystem

        簽名相同,或者申請許可權的應用為系統應用(在system image中),與signature類似,只是增加了rom中自帶的app的宣告 ,儘量不要使用該選項,因為signature已經適合絕大部分的情況

【3】參考連結

3. <uses-permission><permission>的區別

【1】<uses-permission>

系統許可權或者其他APP通過<permission>宣告的許可權

呼叫別人東西的時候,自己需要宣告的許可權

【2】<permission>

  自定義許可權

別人呼叫這個程式時,需要用<uses-permission>來宣告

【3】示例

  應用A的Manifest檔案中宣告許可權,並註冊Broadcast Receiver

應用B傳送訊息給A,需要在B的Manifest檔案中宣告使用相應的許可權,A才能收到

【4】參考連結

4. <permission-tree>標籤

【1】語法定義

5. <permission-group>標籤

【1】語法定義

6. 參考連結

二、觸發條件

1. 定位AndroidManifest.xml檔案中的自定義許可權

【1】對應的特徵:<permission

2. protectionLevel屬性設定為normal

【1】顯示設定android:protectionLevel="normal"

【2】預設情況下,屬性的值也為normal

三、漏洞原理

【1】自定義許可權的保護等級(android:protectionLevel屬性)設定為normal,或沒有顯示設定(預設情況也為normal),可能會導致敏感資訊洩露

四、修復建議

【1】建議將自定義許可權的保護級別設定為signature或者signatureOrSystem