首頁文章關於報價聯絡我們🌐 EN
返回首頁OWASP
OWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析【2026 更新】

OWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析【2026 更新】

📑 目錄

OWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析OWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析

TL;DR

💡 重點摘要:- OWASP Mobile Top 10 2024 版是自 2016 年以來的首次重大更新

版本說明:本文涵蓋 OWASP Mobile Top 10 2024 版(2024 年正式發布)以及 IoT Top 10。2024 版相較 2016 版有重大變更,新增了供應鏈安全和憑證管理等現代化議題。



Part 1:OWASP Mobile Top 10

什麼是 OWASP Mobile Top 10?

OWASP Mobile Top 10 是針對行動應用程式的十大安全風險清單。涵蓋 iOS 和 Android 平台常見的漏洞類型。

行動 App 的安全挑戰和網頁應用不同:

2024 版是自 2016 年以來的首次重大更新,反映了過去 8 年行動安全領域的演變:

2024 版重大變更說明
新增 M1:憑證使用不當強調身份驗證方法和使用者身份保護
新增 M2:供應鏈安全涵蓋從開發到發布的整個生命週期風險
隱私控制獨立成項反映 GDPR、CCPA 等法規要求
二進位保護更受重視防止逆向工程和程式碼竄改

想了解 OWASP 組織和網頁安全標準,可以參考 OWASP 完整指南


Mobile Top 10 漏洞解析(2024 版)

以下是 OWASP Mobile Top 10 2024 版的完整漏洞清單,與 2016 版相比有重大變更。


M1:Improper Credential Usage(憑證使用不當)🆕

說明: 應用程式在處理使用者憑證時存在缺陷,包括不安全的儲存、傳輸或驗證。

2024 版新增此項:反映了對身份驗證方法和使用者身份保護的更高重視。

常見問題

攻擊情境

開發者將 API 金鑰寫死在 App 中
攻擊者反組譯 APK/IPA 檔案
取得金鑰後可冒用身份存取後端服務

防護措施

  1. 使用 Keychain (iOS) / Keystore (Android) 安全儲存憑證
  2. 實作 OAuth 2.0 + PKCE 進行身份驗證
  3. 憑證應由伺服器端動態提供,而非寫死
  4. 實作憑證過期和刷新機制
  5. 使用硬體安全模組(如 Secure Enclave)保護敏感資料

M2:Inadequate Supply Chain Security(供應鏈安全不足)🆕

說明: App 使用的第三方程式庫、SDK 或開發工具存在安全風險。

2024 版新增此項:反映了對整個開發生命週期安全的重視。

風險來源

攻擊情境

App 使用了一個熱門的圖片處理 SDK
該 SDK 被駭客入侵,植入後門
所有使用該 SDK 的 App 都受影響

防護措施

  1. 維護完整的 SBOM(Software Bill of Materials)
  2. 定期掃描依賴套件的已知漏洞(Dependabot、Snyk)
  3. 驗證第三方程式庫的完整性和來源
  4. 實作安全的 CI/CD 流程
  5. 監控供應商的安全公告

M3:Insecure Authentication/Authorization(認證/授權不安全)

說明: App 的身份驗證或權限控制機制存在漏洞。

常見問題

防護措施

  1. 所有認證邏輯都在伺服器端執行
  2. 實作強密碼政策和帳戶鎖定
  3. 支援多因素認證(MFA)
  4. 使用安全的 Session 管理機制
  5. 實作完整的授權矩陣

M4:Insufficient Input/Output Validation(輸入/輸出驗證不足)

說明: App 未正確驗證使用者輸入或系統輸出,可能導致注入攻擊或資料洩露。

常見問題

防護措施

  1. 對所有使用者輸入進行驗證和清理
  2. 使用參數化查詢防止注入
  3. 輸出資料時進行適當編碼
  4. 實作白名單驗證而非黑名單

M5:Insecure Communication(不安全的通訊)

說明: App 與伺服器之間的通訊未受到適當保護。

常見問題

防護措施

  1. 強制使用 HTTPS(TLS 1.3)
  2. 實作 Certificate Pinning
  3. 驗證伺服器憑證的有效性
  4. 使用 App Transport Security (iOS) / Network Security Config (Android)

M6:Inadequate Privacy Controls(隱私控制不足)

說明: App 收集、處理或儲存個人資料的方式不符合隱私規範。

常見問題

防護措施

  1. 實作資料最小化原則
  2. 提供清楚的隱私政策說明
  3. 支援使用者資料匯出和刪除
  4. 取得明確的使用者同意
  5. 確保符合當地隱私法規

M7:Insufficient Binary Protections(二進位保護不足)

說明: App 的二進位檔案缺乏防護,容易被逆向工程或竄改。

常見問題

防護措施

  1. 使用 ProGuard/R8 (Android) 或類似工具混淆程式碼
  2. 偵測 Root/Jailbreak 環境
  3. 實作反調試和反模擬器偵測
  4. 使用程式碼簽章和完整性驗證

M8:Security Misconfiguration(安全設定錯誤)

說明: App 或後端服務的安全設定不當。

常見問題

防護措施

  1. 建立安全的預設設定
  2. 自動化安全設定檢查
  3. 移除不必要的功能和服務
  4. 定期審查安全設定

M9:Insecure Data Storage(不安全的資料儲存)

說明: 敏感資料以不安全的方式儲存在裝置上。

風險位置

攻擊方式

防護措施

// iOS - 使用 Keychain 儲存敏感資料
let query: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrAccount as String: "userToken",
    kSecValueData as String: tokenData,
    kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked
]
SecItemAdd(query as CFDictionary, nil)
// Android - 使用 EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val sharedPreferences = EncryptedSharedPreferences.create(
    context,
    "secret_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

M3:Insecure Communication(不安全的通訊)

說明: App 與伺服器之間的通訊沒有適當保護。

常見問題

攻擊情境

使用者在咖啡店連公共 WiFi
攻擊者執行中間人攻擊 (MITM)
攔截 App 的網路流量
竊取登入憑證或 Session Token

防護措施

  1. 強制使用 HTTPS
  2. 實作 Certificate Pinning
  3. 驗證伺服器憑證
  4. 敏感資料不放 URL
// iOS - Certificate Pinning 範例
let serverTrustPolicy = ServerTrustPolicy.pinCertificates(
    certificates: ServerTrustPolicy.certificates(),
    validateCertificateChain: true,
    validateHost: true
)

M4:Insecure Authentication(不安全的認證)

說明: App 的使用者認證機制有漏洞。

常見問題

防護措施

  1. 認證邏輯放在伺服器端
  2. 使用標準認證協定(OAuth 2.0)
  3. 實作多因素認證
  4. Session Token 安全儲存和傳輸

M5:Insufficient Cryptography(加密不足)

說明: 使用了不安全的加密方式,或加密實作有缺陷。

常見問題

錯誤示範

// 錯誤:金鑰寫死在程式碼
private static final String SECRET_KEY = "MySecretKey123";

// 錯誤:使用不安全的演算法
MessageDigest md = MessageDigest.getInstance("MD5");

正確做法

// 使用 Android Keystore 生成和儲存金鑰
KeyGenerator keyGenerator = KeyGenerator.getInstance(
    KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
keyGenerator.init(
    new KeyGenParameterSpec.Builder("MyKey",
        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
        .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
        .build());
SecretKey key = keyGenerator.generateKey();

M6:Insecure Authorization(不安全的授權)

說明: App 的權限檢查有漏洞,使用者可以存取不該存取的功能或資料。

常見問題

這和 OWASP Top 10 的 A01 Broken Access Control 類似。

防護措施

  1. 所有權限檢查在伺服器端執行
  2. 驗證請求者身份和資源擁有權
  3. 不要信任客戶端傳來的角色資訊

M7:Client Code Quality(客戶端程式碼品質)

說明: 程式碼品質問題導致安全漏洞。

常見問題

防護措施

  1. 使用記憶體安全的語言(Swift、Kotlin)
  2. 靜態程式碼分析
  3. 程式碼審查
  4. 模糊測試(Fuzzing)

M8:Code Tampering(程式碼竄改)

說明: 攻擊者修改 App 的程式碼或執行環境。

攻擊方式

防護措施

  1. 程式碼混淆
  2. 完整性檢查
  3. Root/Jailbreak 偵測
  4. 反調試機制
  5. Runtime 保護
// Android - 簽章驗證範例
public boolean verifySignature(Context context) {
    try {
        PackageInfo packageInfo = context.getPackageManager()
            .getPackageInfo(context.getPackageName(),
                PackageManager.GET_SIGNATURES);
        for (Signature signature : packageInfo.signatures) {
            String currentSignature = signature.toCharsString();
            if (!currentSignature.equals(EXPECTED_SIGNATURE)) {
                return false;
            }
        }
        return true;
    } catch (Exception e) {
        return false;
    }
}

M9:Reverse Engineering(逆向工程)

說明: 攻擊者分析 App 的程式碼,找出漏洞或竊取商業邏輯。

攻擊目的

常用工具

防護措施

  1. 程式碼混淆(ProGuard、R8、SwiftShield)
  2. 字串加密
  3. 控制流程混淆
  4. 原生程式碼(NDK/C++)
  5. 商業保護方案

M10:Extraneous Functionality(多餘功能)

說明: App 中存在開發階段的後門或測試功能,被攻擊者利用。

常見問題

防護措施

  1. 建立正式發布檢查清單
  2. 自動化掃描隱藏功能
  3. 程式碼審查
  4. 分離開發/正式環境設定

OWASP MASVS 與 MASTG

除了 Mobile Top 10,OWASP 還提供了更完整的 Mobile 安全框架。

MASVS(Mobile Application Security Verification Standard)

MASVS 是行動 App 安全驗證標準。定義了 App 應該達到的安全要求。

三個驗證等級

等級名稱適用場景
L1Standard Security一般 App
L2Defense-in-Depth處理敏感資料的 App
RResiliency需要防止逆向工程的 App

MASVS 控制項分類

MASTG(Mobile Application Security Testing Guide)

MASTG 是 MASVS 的實作指南。詳細說明如何測試每一項控制項。

內容包含

這兩份文件是做 Mobile App 安全評估的必備參考。

想知道你的 App 符合 MASVS 哪個等級?


Mobile App 安全測試工具

MobSF(Mobile Security Framework)

開源的自動化 Mobile App 安全測試框架。

功能

使用方式

# Docker 安裝
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf

# 開啟瀏覽器
# http://localhost:8000
# 上傳 APK/IPA 即可分析

QARK(Quick Android Review Kit)

LinkedIn 開源的 Android App 靜態分析工具。

特點

# 安裝
pip install qark

# 分析 APK
qark --apk path/to/app.apk

# 分析原始碼
qark --java path/to/source/

Frida

強大的動態分析框架。可以即時 Hook 和修改 App 行為。

用途

// Frida Script - 繞過 Root 偵測
Java.perform(function() {
    var RootCheck = Java.use("com.app.security.RootCheck");
    RootCheck.isRooted.implementation = function() {
        console.log("Root check bypassed");
        return false;
    };
});

搭配 OWASP ZAP 可以對 App 的 API 進行更完整的測試。



Part 2:OWASP IoT Top 10

什麼是 OWASP IoT Top 10?

OWASP IoT Top 10 是針對物聯網設備的十大安全風險清單。

IoT 設備的安全挑戰:

2018 版是目前最新版本。涵蓋從硬體到雲端的完整 IoT 生態系。


IoT Top 10 漏洞解析

I1:Weak, Guessable, or Hardcoded Passwords

中文:弱密碼、可猜測密碼、寫死密碼

問題

真實案例: 2016 年 Mirai 殭屍網路攻擊。利用 IoT 設備的預設密碼,感染數十萬台設備,發動史上最大 DDoS 攻擊。

防護措施

  1. 強制首次使用時修改密碼
  2. 每台設備使用唯一預設密碼
  3. 禁止弱密碼
  4. 支援多因素認證

I2:Insecure Network Services

中文:不安全的網路服務

問題

常見問題服務

防護措施

  1. 關閉非必要服務
  2. 定期更新修補漏洞
  3. 網路服務需要認證
  4. 使用防火牆限制存取

I3:Insecure Ecosystem Interfaces

中文:不安全的生態系介面

問題: IoT 設備通常連接到手機 App、雲端平台、API 等。這些介面的安全問題會影響整個系統。

常見問題

防護措施

  1. 套用 OWASP Top 10API Top 10 標準
  2. 所有介面都要認證授權
  3. 輸入驗證和輸出編碼

I4:Lack of Secure Update Mechanism

中文:缺乏安全更新機制

問題

攻擊情境

攻擊者攔截韌體更新流量
植入惡意程式碼
設備下載並安裝惡意韌體
設備成為殭屍網路一員

防護措施

  1. 更新必須加密傳輸(HTTPS)
  2. 韌體必須數位簽章
  3. 驗證韌體完整性
  4. 防止版本降級
  5. 支援自動更新

I5:Use of Insecure or Outdated Components

中文:使用不安全或過時的元件

問題

防護措施

  1. 建立 BOM(Bill of Materials)清單
  2. 監控元件漏洞公告
  3. 定期更新元件
  4. 淘汰不再維護的元件

I6:Insufficient Privacy Protection

中文:隱私保護不足

問題

防護措施

  1. 資料最小化原則
  2. 加密敏感資料
  3. 透明的隱私政策
  4. 提供資料刪除選項

I7:Insecure Data Transfer and Storage

中文:不安全的資料傳輸和儲存

問題

防護措施

  1. 使用 TLS 加密所有傳輸
  2. 本地資料加密
  3. 安全的金鑰儲存

I8:Lack of Device Management

中文:缺乏設備管理

問題

企業 IoT 部署需要

  1. 設備清單管理
  2. 遠端設定和更新
  3. 安全監控和告警
  4. 設備除役流程

I9:Insecure Default Settings

中文:不安全的預設設定

問題

防護措施

  1. 安全預設原則
  2. 關閉非必要功能
  3. 強制設定流程
  4. 提供安全設定指南

I10:Lack of Physical Hardening

中文:缺乏實體安全防護

問題

防護措施

  1. 移除或停用除錯介面
  2. 防拆偵測
  3. 加密儲存
  4. 實作 Secure Boot

IoT 安全測試方法

IoT 安全測試需要多層面的評估。

測試範圍

層面測試重點
硬體實體介面、除錯埠、儲存媒體
韌體更新機制、加密、寫死密碼
網路開放服務、加密、認證
Web/App標準 Web/Mobile 安全測試
API認證、授權、輸入驗證
雲端資料安全、存取控制

常用工具

工具用途
Binwalk韌體分析和提取
Firmwalker韌體安全掃描
Nmap網路服務掃描
Wireshark網路流量分析
Bus Pirate硬體介面分析
OWASP ZAPWeb/API 掃描

韌體分析範例

# 使用 Binwalk 提取韌體
binwalk -e firmware.bin

# 搜尋寫死的密碼
grep -r "password" _firmware.bin.extracted/
grep -r "secret" _firmware.bin.extracted/

# 尋找 SSH 金鑰
find _firmware.bin.extracted/ -name "*.pem"
find _firmware.bin.extracted/ -name "id_rsa"

IoT 產品上市前需要資安檢測?我們能幫忙



常見問題 FAQ

Q1:iOS 和 Android 哪個比較安全?

兩者各有優劣,沒有絕對答案。

iOS 的安全優勢

Android 的安全優勢

實際風險比較

結論:選擇任一平台,保持系統更新、只安裝可信 App、注意權限授予,比選哪個平台更重要。

Q2:如何檢測 App 是否安全?

一般使用者可以做的

  1. 只從官方商店下載 App
  2. 檢查 App 要求的權限是否合理
  3. 查看使用者評價和評分
  4. 確認開發者資訊
  5. 注意 App 的隱私政策

開發團隊應該做的

  1. 使用 MobSF 進行自動化掃描
  2. 依照 OWASP MASVS 檢查清單
  3. 進行程式碼審查
  4. 委託專業滲透測試
  5. 定期重新評估

App 安全的檢查指標

Q3:智慧家電需要擔心資安嗎?

需要,而且很重要。

智慧家電的資安風險

  1. 隱私風險:攝影機、麥克風可能被駭入
  2. 成為跳板:攻擊者可從 IoT 裝置進入家庭網路
  3. 殭屍網路:被用於發動 DDoS 攻擊
  4. 勒索軟體:智慧鎖被駭可能被鎖在門外

真實案例

保護建議

  1. 購買前研究品牌的安全紀錄
  2. 修改預設密碼
  3. 定期更新韌體
  4. 將 IoT 裝置放在獨立的網路區段
  5. 關閉不需要的遠端存取功能
  6. 不再使用時,執行設備重置


結論

Mobile 和 IoT 設備的安全挑戰和傳統 Web 應用不同,需要專門的安全思維。

Mobile 安全重點

IoT 安全重點

下一步建議:

如果你正在開發 AI 驅動的 Mobile 或 IoT 應用,也要留意 OWASP LLM Top 10 的風險。實戰練習方面,Juice Shop 是很好的起點。

預約資安評估,讓專家用 OWASP 標準檢視你的 App 與 IoT 產品

OWASPAWSKubernetes
上一篇
OWASP Top 10 完整解析:2025 最新版十大網站安全風險【2026 更新】
下一篇
OWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護【2026 更新】