【最新版】Android APP 如何去符合工信部上架應(yīng)用商店的要求

最近參與的 APP 陸陸續(xù)續(xù)發(fā)現(xiàn)一些需要修改的點去符合工信部的合規(guī)要求,針對工信部和應(yīng)用商店是否有政策違規(guī)的風(fēng)險點,大家可以自查一下以下一些點:

  • 應(yīng)用需要加固
    如果App 未加固,攻擊者可輕易地反編譯APK,獲取App 源代碼,篡改App 代碼邏輯并重打包,對于有付費功能的App,會造成嚴重的財產(chǎn)損失。

    1. App 注入風(fēng)險
      注入是常見的攻擊手段。通過系統(tǒng)API 將代碼寫入到目標進程并讓其執(zhí)行,攻擊者可以將一段惡意代碼寫到目標進程,這段代碼可以加載其它可執(zhí)行程序,進而實施hook,監(jiān)控程序運行、獲取敏感信息等。常見的動態(tài)注入,可以實現(xiàn)竊取輸入的登錄賬號、密碼、支付密碼,修改轉(zhuǎn)賬的目標賬號、金額,竊取通訊數(shù)據(jù)等。
    2. 動態(tài)調(diào)試攻擊風(fēng)險
      如果App 存在C 層代碼動態(tài)調(diào)試的風(fēng)險,攻擊者可以利用GDB、IDA、Ptrace 等調(diào)試器跟蹤運行的目標程序,查看、修改內(nèi)存中的代碼和數(shù)據(jù),甚至分析篡改程序的業(yè)務(wù)邏輯,對客戶關(guān)鍵數(shù)據(jù)或者服務(wù)器進行惡意攻擊,例如修改客戶端業(yè)務(wù)操作的數(shù)據(jù),比如轉(zhuǎn)賬賬號、金額等,導(dǎo)致用戶的損失。
    3. 篡改和二次打包風(fēng)險
      APK 篡改后二次打包不僅已經(jīng)嚴重危害開發(fā)者版權(quán)和經(jīng)濟利益,而且也使App 用戶遭受到不法應(yīng)用的惡意侵害。對客戶端程序添加或修改代碼,修改客戶端資源圖片,配置信息、圖標,添加廣告,推廣自己的產(chǎn)品,再生成新的客戶端程序,可導(dǎo)致大量盜版應(yīng)用的出現(xiàn)分食開發(fā)者的收入;惡意的二次打包還能實現(xiàn)應(yīng)用釣魚、添加病毒代碼、添加惡意代碼,從而竊取登錄賬號密碼、支付密碼,攔截驗證碼短信,修改轉(zhuǎn)賬目標賬號、金額等。
    4. App 內(nèi)存數(shù)據(jù) dump 風(fēng)險
      應(yīng)用程序在運行時會產(chǎn)生一些敏感數(shù)據(jù)、比如解密后的資源文件、解密后的執(zhí)行代碼等,如果進程的內(nèi)存數(shù)據(jù)未采取任何保護措施,攻擊者可以使用dump 工具將程序內(nèi)存dump 到文件中,或者修改內(nèi)存數(shù)據(jù)來欺騙程序、偽裝虛假數(shù)據(jù)欺騙服務(wù)端。

    TIP:筆者對比了360公司的360加固保和騰訊云的應(yīng)用加固的免費方案,發(fā)現(xiàn)360加固保功能更穩(wěn)定,而且有電腦客戶端可下載安裝,方便進行多個渠道包同時加固以及簽名。而騰訊云加固方案,對比起來就沒那么易用了。

  • App 運營者未在個人信息處理規(guī)則(隱私政策)中提供或說明:個人信息存儲期限。

  • App 在申請打開可收集個人信息的存儲等系統(tǒng)權(quán)限時,僅依賴系統(tǒng)彈窗向用戶索取權(quán)限而未向用戶同步告知申請目的、方式和范圍,無法保證用戶的知情權(quán)。用戶在使用更換頭像業(yè)務(wù)功能時授權(quán)App 打開存儲權(quán)限,但后續(xù)用戶使用意見反饋圖片上傳業(yè)務(wù)功能時直接復(fù)用該權(quán)限,變更了使用目的,但未向用戶同步告知并征得用戶同意,不符合規(guī)范要求。
    TIP: 若同一系統(tǒng)權(quán)限適用于多個場景(例如:發(fā)帖子的圖片、更改頭像、意見反饋上傳圖片等地方均需要打開系統(tǒng)讀取存儲權(quán)限),則需要在彈系統(tǒng)權(quán)限之前彈出APP內(nèi)自己的彈框說明,用于告知用戶當前權(quán)限會應(yīng)用的當次及后續(xù)的全部場景和用途。用戶了解全部的權(quán)限使用場景后,可自行選擇是否同意授權(quán)。

  • App 存在提供消息推送、懸浮窗等消息通知功能,但未向用戶提供關(guān)閉消息通知功能的選項,不符合規(guī)范要求。

  • App 在用戶拒絕同意隱私政策后,App 直接退出拒絕提供服務(wù),不符合規(guī)范要求。
    TIP: 如果不同意一隱私協(xié)議,比如APP可以以游客方式使用,可以再彈一個使用試用模式的彈框,告知用戶在使用試用模式時功能的局限性,以及對于隱私敏感信息時如何處理的,如果用戶不同意使用試用模式,則可以點拒絕按鈕退出APP。

  • App 在用戶使用微信等第三方登錄后,在未涉及信息發(fā)布、金融支付等業(yè)務(wù)功能場景下,仍強制要求用戶綁定手機號碼,違反必要性原則,不符合規(guī)范性要求。

  • 如果隱私協(xié)議里有提收集用戶相關(guān)信息,用于更個性化的用戶體驗和服務(wù)。則會認為存在定向推送功能,需要在應(yīng)用內(nèi)主功能界面以“推薦”、“為你推薦”、“個性化”、“標簽化”、“猜你喜歡”等字樣進行顯著標識。如果應(yīng)用內(nèi)的確存在個性化推薦的功能,則需要在設(shè)置頁面有拒絕、關(guān)閉定向推送或廣告精準營銷的選項,讓用戶可以自行控制。

  • 未按法律規(guī)定提供刪除或更正個人信息功能或未公布投訴、舉報方式等信息。1、App 內(nèi)未提供注銷賬號的功能,不符合相關(guān)規(guī)范要求。2、用戶在申請注銷用戶賬戶時,強制要求用戶填寫聯(lián)系QQ 賬號,不符合規(guī)范要求

  • 用戶同意隱私協(xié)議彈框后,如果APP的隱私協(xié)議的內(nèi)容有變動,用戶后面打開APP時需要能看到最新隱私協(xié)議有變動的彈框提示,在APP內(nèi)的系統(tǒng)通知里也同時告知一下會更好。盡量用戶同意隱私協(xié)議的彈框的標識代碼,不要在客戶端寫死,讓服務(wù)器通過接口來動態(tài)控制。

  • 在未同意隱私協(xié)議彈框之前,有調(diào)用以下代碼:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        String processName = getProcessName(context);
        if (!getPackageName(context).equals(processName)) {
            WebView.setDataDirectorySuffix(processName);
        }
    }
    

    TIP:這個代碼會導(dǎo)致獲取用戶應(yīng)用列表權(quán)限,需要將這個針對 WebView 的 Android版本適配代碼,放在用戶同意隱私協(xié)議彈框后面進行調(diào)用。

  • 數(shù)據(jù)存儲風(fēng)險(私有文件泄露風(fēng)險)
    TIP:檢查 APP 內(nèi)自己的業(yè)務(wù)代碼以及第三方SDK中是否有調(diào)用getSharedPreferences 參數(shù)設(shè)置不當,導(dǎo)致第三方程序可訪問,存在信息泄露的問題。

  • 漏洞風(fēng)險(WebView 組件遠程代碼執(zhí)行漏洞)
    TIP:在Android 版本<=4.1.2(API 16)的系統(tǒng)中中WebView 組件未對addJavaScriptInterface接口權(quán)限做出相應(yīng)限制,導(dǎo)致攻擊者可通過反射機制調(diào)用“java.lang.Runtime”來執(zhí)行任意指令,從而導(dǎo)致用戶的敏感信息泄露。比如應(yīng)用內(nèi)有限制最小 Android 系統(tǒng)版本5.0(API 21)才可使用,但是代碼里也要做對應(yīng)使用WebView 組件的addJavaScriptInterface接口的頁面,去做Android系統(tǒng)版本判斷,在Android 版本<=4.1.2(API 16)的系統(tǒng)中做相應(yīng)限制(因為各大應(yīng)用商店和各個省的管局對這個審核標準不一樣)。

  • 漏洞風(fēng)險(隨機數(shù)破解漏洞風(fēng)險)
    TIP:Android 4.4 之前版本SecureRandom 實現(xiàn)中存在安全漏洞,這可使攻擊者利用PRNG 預(yù)測性,利用此漏洞繞過密碼保護機制。

  • 漏洞風(fēng)險(checkServerTrusted 證書漏洞風(fēng)險)
    TIP:checkServerTrusted 覆蓋實現(xiàn)后可能沒有實現(xiàn)證書的判斷邏輯,并作異常處理,將導(dǎo)致中間人攻擊等嚴重安全隱患,攻擊者可以輕易劫持HTTPS 會話,嗅探用戶密碼和其他敏感信息。

  • 漏洞風(fēng)險(Intent 協(xié)議解析越權(quán)漏洞風(fēng)險)
    TIP:Receiver 權(quán)限未設(shè)置,惡意程序可以發(fā)送相應(yīng)的action 廣播危害應(yīng)用安全。

  • 漏洞風(fēng)險(WebView File同源策略繞過漏洞)
    TIP:通過該漏洞,可在無特殊權(quán)限下盜取應(yīng)用的任意私有文件,尤其是瀏覽器,可通過利用該漏洞,獲取到瀏覽器所保存的密碼、Cookie、收藏夾以及歷史記錄等敏感信息,從而造成敏感信息泄露。

    WebView跨域訪問漏洞
    如果file域訪問為非功能需求,對 WebView 的設(shè)置,可以添加如下代碼:
    webSettings.setAllowFileAccess(false);
    webSettings.setAllowFileAccessFromFileURLs(false); //Android4.1版本之前這個API默認是true
    webSettings.setAllowUniversalAccessFromFileURLs(false); ///Android4.1版本之前這個API默認是true
    若需要開啟file域訪問,則設(shè)置file路徑的白名單,嚴格控制file域的訪問范圍,具體如下:
    1)固定不變的HTML文件可以放在assets或res目錄下,file:///android_asset和file:///android_res在不開啟API的情況下也可以訪問。
    2)可能會更新的HTML文件放在/data/data/(app) 目錄下,避免被第三方替換或修改。
    3)對file域請求做白名單限制時,需要對"../../"特殊情況進行處理,避免白名單被繞過。

    有風(fēng)險的WebView系統(tǒng)隱藏接口漏洞
    根據(jù)CVE披露的WebView遠程代碼執(zhí)行漏洞信息(CVE-2012-663、CVE-2014-7224),Android系統(tǒng)中存在一共三個有遠程代碼執(zhí)行漏洞的隱藏接口。分別是位于android/webkit/webview中的"searchBoxJavaBridge"接口、android/webkit/AccessibilityInjector.java中的"accessibility"接口和"accessibilityTraversal"接口。調(diào)用此三個接口的APP在開啟輔助功能選項中第三方服務(wù)的Android系統(tǒng)上將面臨遠程代碼執(zhí)行漏洞。
    開發(fā)者自查,如果使用了WebView,那么使用WebView.removeJavascriptInterface(String name)API時,顯示的移除searchBoxJavaBridge_、accessibility、accessibilityTraversal這三個接口。
    WebView.removeJavascriptInterface("searchBoxJavaBridge_");
    WebView.removeJavascriptInterface("accessibility");
    WebView.removeJavascriptInterface("accessibilityTraversal");

    WebView File域同源策略繞過風(fēng)險檢測
    應(yīng)用程序一旦使用WebView,同時支持File域,并打開了對JavaScript的支持,就能利用JavaScript的延時執(zhí)行,繞過File協(xié)議的同源檢查,并能夠訪問應(yīng)用程序的私有文件,導(dǎo)致敏感信息泄露。
    1.對于不需要使用File協(xié)議的應(yīng)用,禁用File協(xié)議,顯式設(shè)置WebView.getSettings().setAllowFileAccess(false)
    2.對于需要使用File協(xié)議的應(yīng)用,禁止File協(xié)議調(diào)用JavaScript,顯式設(shè)置WebView.getSettings().setJavaScriptEnabled(false)

  • 漏洞風(fēng)險(未移除有風(fēng)險的WebView 隱藏系統(tǒng)接口漏洞)
    TIP:攻擊者可利用WebView 隱藏的系統(tǒng)接口實現(xiàn)遠程代碼執(zhí)行

也可再看下筆者更早之前的一篇文章,這篇文章是對之前文章的一個內(nèi)容補充:
Android APP 如何去符合工信部上架應(yīng)用商店的要求
http://www.itdecent.cn/p/bcf8c3d23e25

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容