<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 1 AndroidManifest文件中PermissionGroup檢測 # 04001 PermissionGroup可以對permission進行一個邏輯上的分組。 首先我們要明晰兩個概念,`<permission>`標簽中的`android:permissionGroup`屬性和`<permission-group>`標簽是兩個不同的東西。可以不定義相應的`<permission-group>`標簽,但是如果在`<permission>`標簽有permissionGroup屬性,那么值應該不為空。如果permissionGroup的屬性為空,會導致權限定義無效,且其他app無法使用該權限。 風險等級:`提醒` 問題示例: 分析AndroidManifest.xml中的`<permission>`標簽中的屬性,是否有permissionGroup,并檢測其屬性的值。若permissionGroup屬性為空則將該檢測項標注為`提醒`等級,并將有問題的代碼段標注出來。 ``` <permission-group android:name="Today-is-sunday" android:label="Hello-baby" android:description="HelloWorld"/> <permission android:name="TEST_GO" android:label="@string/app_name" android:permissionGroup="" android:protectionLevel="normal" > </permission> ``` 建議: ``` <permission android:name="TEST_GO" android:label="@string/app_name" android:permissionGroup="LOVE_HAPPY" android:protectionLevel="normal" > </permission> <!--或者去掉permissionGroup屬性--> <permission android:name="TEST_GO" android:label="@string/app_name" android:protectionLevel="normal" > </permission> ``` 查閱更多: * https://developer.android.google.cn/guide/topics/manifest/permission-group-element * http://blog.csdn.net/feng88724/article/details/6409313 * http://blog.csdn.net/reboot123/article/details/14451123 * http://www.blackmoonit.com/2012/07/android-custom-permissions/ ## 2 AndroidManifest文件中系統權限使用檢測 # 04002 若App如果使用了一些系統限制權限,諸如`android.permission.WRITE_SECURE_SETTINGS`和`android.permission.INSTALL_PACKAGES`,則該應用應該是設備自帶的系統或Google自帶的APP,并且應該放置在`/system/app`目錄下,否則就是一個惡意APP。 若App使用下述權限,則該app有較高權限,要謹慎使用。 * `android.permission.MOUNT_FORMAT_FILESYSTEMS` * `android.permission.MOUNT_UNMOUNT_FILESYSTEMS` * `android.permission.RESTART_PACKAGES` 風險等級:`提醒` 問題示例: 檢測`<uses-permission>`中是否涉及以下權限的申請,若有其中的**任何一個存在**,則將該掃描項標注為提醒,并將又問題的代碼段標注出來。 ``` <uses-permission android.name="android.permission.WRITE_SECURE_SETTINGS"> <uses-permission android.name="android.permission.INSTALL_PACKAGES"> <uses-permission android.name="android.permission.MOUNT_FORMAT_FILESYSTEMS"> <uses-permission android.name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"> <uses-permission android.name="android.permission.RESTART_PACKAGES"> ``` 建議: 根據業務需求,如非必要,移除這些高級別權限。 ## 3 AndroidManifest危險ProtectionLevel權限檢測 # 04003 由于應用自定義的permission的protectionLevel屬性設置不當,會導致組件(如:content provider)數據泄露危險。最好的權限設置應為`signature`或`signatureOrSystem`,進而避免被第三方應用利用。 風險等級: `提醒` 問題示例 如果未設置protectionLevel,默認情況下,permission的protectionLevel為`normal`。若protectionlevel為`normal`或`dangerous`或者未設置protectionLevel,均認為不安全,均將該掃描項標注為`提醒`,并標注問題的代碼段。 ``` <permission android:name="TEST_GO" android:label="@string/app_name" android:permissionGroup="TEST" android:protectionLevel="normal" > <!--protectionLevel為dangerous或者未設置protectionLevel均認為不安全--> </permission> ``` 建議: ``` <permission android:name="TEST_GO" android:label="@string/app_name" android:permissionGroup="TEST" android:protectionLevel="signature" > <!--或者將protectionLevel設置為signatureOrSystem--> </permission> ``` 查閱更多: * http://www.wooyun.org/bugs/wooyun-2010-039697 * http://drops.wooyun.org/mobile/16382 * https://security.tecent.com/index.php/blog/msg/6 ## 4 AndroidManifest sharedUserId 檢測 # 04004 通過sharedUserId,可以讓擁有同一個User Id的多個apk運行在同一個進程中,互相訪問任意資源。將sharedUserId設置為`android.uid.system`,可以把app放到系統進程中,app將獲得極大的權限。如果app同時有master key漏洞,容易導致被root。 風險等級: 如果sharedUserId設置為`android.uid.system`且app有master key漏洞,則是`高危`漏洞;若沒有master key漏洞,則是`提醒` 問題示例: 先檢測app/build.gradle中的minSdkVersion,若 <= 19,則說明其運行的系統可能存在mster key漏洞(Android系統 <= 4.4,即API Level <= 19存在master key漏洞)。此時若sharedUserId設置為`android.uid.system`,則標注為`高危`漏洞;若minSdkVersion >19 則是提醒。 ``` <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.coolweather.android" android:sharedUserId="android.uid.system"> ... </manifest> ``` 建議: 采用API等級高于19的系統。若非特殊的需求,一般不會將sharedUserId設置為`android.uid.system`。 查閱更多: * http://www.cnblogs.com/wotakuc/archive/2013/03/27/2984423.html * http://www.saurik.com/id/17 * https://books.google.com.hk/books?id=UgVhBgAAQBAJ&pg=PA230&lpg=PA230&dq=android.uid.system+master+key&source=bl&ots=SWA4ugfgI1&sig=Nx6X1ORGXHWnntVrlNP15R32wSw&hl=zh-CN&sa=X&ved=0ahUKEwinrqDvwanNAhVCUZQKHbXZDRgQ6AEIMzAD#v=onepage&q=android.uid.system%20master%20key&f=false ## 5 AndroidManifest allowBackup標志檢測 # 04005 當API Level>= 8時(其實小于8的API版本現在已經滅絕了),allowBackup這個標志被設置成true或**不設置該標志位**時,應用程序數據可以備份和恢復,adb調試備份允許惡意攻擊者復制應用程序數據。 風險等級:`低危` 問題示例: ``` <application android:name="org.litepal.LitePalApplication" android:allowBackup="true" android:fullBackupContent="true" android:icon="@mipmap/logo" android:label="@string/app_name" > ... </application> ``` 建議: 若無需備份程序的數據,可將allowBackup標志位設為false ``` <application android:allowBackup="false"> ... </application> ``` 若要備份程序的數據,可以采用設置自動備份程序的參數`android:fullBackupContent=String`,并添加相應的規則進行限制。這個自動備份會將用戶保留在設備中的數據自動上傳至用戶的Google Drive帳戶。它是在Android 6.0中引入的,使用的方式如下所示: ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.my.appexample"> ... <app ... android:fullBackupContent="@xml/mybackupscheme"> </app> ... </manifest> ``` 在此示例代碼中,`android:fullBackupContent`屬性指定了一個 XML 文件。該文件名為mybackupscheme.xml,位于應用開發項目的 res/xml/ 目錄中。 此配置文件包括關于要備份哪些文件的規則。 下列示例代碼顯示了將某一特定文件排除在備份之外的配置文件: ``` <?xml version="1.0" encoding="utf-8"?> <full-backup-content> <exclude domain="database" path="device_info.db"/> </full-backup-content> ``` 此示例僅將一個特定數據庫文件排除在備份之外,所有其他文件均予以備份。 查閱更多: * https://blog.csdn.net/self_study/article/details/54020909 * https://blog.csdn.net/smzhangyang/article/details/47301053 * https://blog.csdn.net/maoxian007/article/details/79878924 ## 6 AndroidManifest文件Debuggable配置檢測 # 04006 在AndroidManifest.xml中定義Debuggable項,如果該項被打開,app存在被惡意程序調試的風險,可能導致泄露敏感信息等問題。 風險等級:`高危` 問題示例: `android:debuggable`這個標識用來表明該應用是否可以被調試,默認值為 false。但是我們在開發應用的測試版本是時候常常需要進行調試,所以會將debuggable設置為true,但是在發布的時候忘記設置成false了,這是就會埋下隱患。 ``` <application android:debuggable="true" </application> ``` 建議: 不設置debuggable選項,或者將其設置成false,推薦使用后面一種。 ``` <application android:debuggable="false" </application> ``` 查閱更多: * https://developer.android.google.cn/guide/topics/manifest/application-element#debug ## 7 非必要權限檢測 # 04007 檢測一些在**生產環境**中不必要使用的權限. * `android.permission.ACCESS_MOCK_LOCATION`該權限是使在模擬器中使用,用于獲取模擬定位信息,安裝在用戶手機中的應用不應該申請該權限。 風險等級:`提醒` 問題示例: ``` <uses-permssion android.name="android.permission.ACCESS_MOCK_LOCATION"> ``` 建議: 移除`android.permission.ACCESS_MOCK_LOCATION`權限 ## 8 app最低版本檢測 # 04008 羅列出跟最低版本相關的漏洞和bug,提醒開發者注意自己應用支持的最低版本的系統可能存在的問題。 風險等級:`提醒` 問題示例: 檢測app/build.gradle中的minSdkVersion確定APP所支持的最低版本的系統API,對應到相應的Android版本上。 ``` android { compileSdkVersion 28 buildToolsVersion "28.0.3" defaultConfig { applicationId "com.coolweather.android" minSdkVersion 15 targetSdkVersion 28 versionCode 2 versionName "1.1" } ``` 下圖是不完整的Android版本與API的對應關系,詳細的可以查看查閱更多中的資料。 ![Android版本與API的對應關系](http://wiki-1252789527.picsh.myqcloud.com/scan_model/Android%E7%89%88%E6%9C%AC%E5%8F%B7%E4%B8%8EAPI.png) 查閱更多: * Android API級別(https://docs.microsoft.com/zh-cn/xamarin/android/app-fundamentals/android-api-levels?tabs=windows)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看