APP安全檢測
檢測流程
用戶將APK檔案上傳至分析系統後,系統將自動進行反編譯動作,並比對出可疑的行為,將結果輸出後進行第二階段判定。第二階段之結果將匯入至動態分析系統信行第三階段判定,並產生最終報告。
用戶依照三階段分析所產生的報告,便可以很清楚的知道APP中是否有安全性漏洞、或隱藏了哪些風險,並加以改善
MOBILE APP SECURITY TESTING 架構示意圖

MOBILE APP SECURITY TESTING 實際操作畫面
APP安全檢測分類
APP安全檢測分類
基於 NIST163 與 ISO17034的精神,並讓後續APP的開發者有所依據,我們針對APP的安全查核做出了分類,分類的依據如下表:
類型 | 描述 | 負面的結果 |
權限 | 權限允許存取被控制的功能,例如照相機或GPS和在程式中被請求,權限可以在沒有取得用戶同意下申請暗中同意權限。 | 有太多的權限的APP應用程式可以對APP應用程式的預期功能範圍之外執行非預期的功能。此外,權限容易受到另一個應用程式的攻擊。如果被許可太少的權限,則APP應用程式將不能完成所需的功能。 |
暴露的通訊 | 內部通信協定的意思是由一個APP應用程式經由內部的裝置傳遞訊息,無論是APP本身或其他APP應用程式,而外部通信指的是允許資訊離開設備。 | 暴露內部通信將讓APP應用程式收集非預期的資訊,並且會注入新的資訊。暴露外部通信(數據網路、無線網路、藍牙、NFC等)留下的資訊會公開透露或被執行意外的功能或遭遇中間人攻擊( Man-in-the-middle attack )。 |
有潛在危險的功能性 | 控制功能可存取系統的關鍵資源或用戶的個人資訊。這個功能可以經由API呼叫或固定寫死編碼存取APP應用程式中。 | 非預期的功能可以在應用程式的功能的範圍之外來執行。 |
應用程式的勾串行為 | 兩個或更多的APP應用程式傳遞資訊給對方,以增加一個或兩個APP應用程式潛在能力。 | 勾串行為可以造成應用程式獲得非預期的數據例如遊戲應用程式獲得用戶的聯絡人列表。 |
混淆 | 對用戶隱藏或模糊化功能性及控制流。混淆定義有三個條件:外部程式庫呼叫求、映射和原生碼的使用習慣。 | 1. 外部程式庫可以包含非預期及惡意的功能性。 2. 映射的要求可以模糊一個APP應用程式的控制流或破壞APP應用程式中的權限。 3. 原生碼(寫在Android中非Java語言的其他程式碼)可以執行非預期及惡意的功能性 |
過度的電源消耗 | 過度的功能或無意的APP應用功能執行在設備上會有意或無意地消耗電池的電量 | 縮短電池的壽命可能會影響到執行重要功能的能力。 |
傳統的軟體易損性 | 所有易損性都包括與傳統的Java程式碼有關: 身份驗證和存取控制、緩衝處理、流程控制管理、加密和隨機性機制、錯誤處理、文件處理、資訊洩露、起始和關閉,注入、惡意邏輯、數字處理、以及指標和參考處理。 | 常見的後果包括意外輸出、資源耗盡、拒絕服務等。 |
行動應用程式安全檢測項目分類等級 | |||||
A級 | B級 | C級 | |||
A1 | 權限行為誤差 | B1 | 提權 | C1 | 在程式碼中超過許可 |
C2 | 在API超過許可 | ||||
B2 | 權限不足 | C3 | 在程式碼中許可以下 | ||
C4 | 在API許可以下 | ||||
B3 | 開發者自建權限 | C5 | 開發者在程式碼中建立 | ||
C6 | 開發者在API中建立 | ||||
B4 | 故意隱含的權限 | C7 | 經由API許可 | ||
C8 | 經由其它權限許可 | ||||
C9 | 經由追溯許可 | ||||
A2 | 通訊暴露 | B5 | 外部通訊暴露 | C10 | 藍牙 |
C11 | 全球定位系統 | ||||
C12 | 網路/數據溝通 | ||||
C13 | NFC存取 | ||||
B6 | 內部通訊暴露 | C14 | 未受保護的目的 | ||
C15 | 無保護的活動 | ||||
C16 | 無保護的服務 | ||||
C17 | 未受保護的內容來源 | ||||
C18 | 未受保護的播送接收器 | ||||
C19 | 錯誤旗標 | ||||
A3 | 潛在危險功能 | B7 | 直接定址 | C20 | 儲存存取 |
C21 | 網路存取 | ||||
B8 | 潛在危險的API | C22 | API的機密成本 | ||
C23 | API的個人資訊 | ||||
C24 | API的設備管理 | ||||
B9 | 特權增加 | C25 | 更改文件權限 | ||
C26 | 存取高階用戶/來源 | ||||
A4 | 應用程式勾串行為 | B10 | 內容來源/目的 | C27 | 未受保護的內容來源 |
C28 | 允許保護內容來源 | ||||
C29 | 未決定的目的 | ||||
B11 | 播送接收器 | C30 | 播送接收器的重要訊息 | ||
B12 | 數據建立/更改/刪除 | C31 | 建立/更改/刪除文件資源 | ||
C32 | 建立/更改/刪除資料庫資源 | ||||
B13 | 服務號碼 | C33 | 過度檢查的服務狀態 | ||
A5 | 陷阱 | B14 | 程式庫呼叫 | C34 | 使用潛在危險的程式庫 |
C35 | 潛在的惡意程式庫套裝軟體但不使用 | ||||
B15 | 本機程式碼檢測 | C36 | |||
B16 | 映射 | C37 | |||
B17 | 壓縮的程式碼 | C38 | |||
A6 | 耗電量過大 | B18 | CPU使用率 | C39 | |
B19 | I / O | C40 |