Androidセキュアコーディングガイド

【スマホ脆弱性診断】OWASP Mobile Top 10 2024では何を確認すればよいか

投稿日: カテゴリー: セキュリティ
Pocket

8年ぶりにOWASP Mobile Top 10の更新

8年ぶりにOWASP Mobile Top 10が更新されました。2016の頃診断項目と診断手法の棚卸しをしていた頃が懐かしいです・・・・・・失礼、もう更新しないと思いMASVSベースに話をするのも辛いと思っていた今日この頃、ついに更新とのことで感慨に耽っていました。全ての項目が何らかの更新、新規、統合で変わっており差分表を作るより新規の枠に既存診断項目を当てはめ不足を当てるのが一番以降がスムーズになると想定されます。
先日更新されたデジタル庁の資料政府情報システムにおける脆弱性診断導入ガイドラインでは反映できなかった模様・・世間とのズレが益々乖離しないためにも早々に反映してほしいです。

8年ぶりにOWASP Mobile Top 10の概要と確認すべき内容

どんな題目でどんな要素に分解できるかを列挙し、採用しているフレームワーク、そして対応OSの順で診断手法を分類する必要があります。まずはざっくり題目を1行で説明できることと代表的な観点を見ていきましょう。

M1: Improper Credential Usage (クレデンシャルの不適切な使用)
APIキーやクラウドサービスのクレデンシャルなどの重要情報に対して、ハードコードされたクレデンシャルなど保護措置に欠落がある場合、
正当なアクセスの必要性を回避するなど、クレデンシャルを悪用される可能性があります。

・ハードコードされたクレデンシャル – モバイルアプリがそのアプリのソースコードや設定ファイル内にハードコードされたクレデンシャルを含んでいる場合
・安全でないクレデンシャルの転送 – クレデンシャルが暗号化なしや安全でないチャネルを通じて転送される
・安全でないクレデンシャルの保存 – 共有領域やファイルなど安全でない方法でユーザークレデンシャルをデバイスに保存している場合
・脆弱なユーザー認証 – ユーザー認証が脆弱なプロトコルに依存している場合

M2: Inadequate Supply Chain Security (不十分なサプライチェーンセキュリティ)
サプライチェーンプロセスが適切に監視されていない場合、悪意のある内部関係者やサードパーティ製ライブラリにより不正な機能がアプリ内に注入され、
利用者の機密情報が漏えいしたり、アプリやデバイスを不正に制御される等の被害が発生する恐れがあります。

M3: Insecure Authentication/Authorization (安全でない認証/認可制御)
これは、モバイルアプリが行う認証/認可制御が適切に実装されていない場合、正規利用者になりすました攻撃者によってサービスを不正に利用されたり、
本来、利用できないはずの機能を利用されてしまうといった被害が発生する可能性があります。

・安全でない直接オブジェクト参照 (IDOR) 脆弱性の存在
・隠しエンドポイント -開発者用の機能や、メンテナンス機能へのアクセスができた場合
・ユーザーのロールまたは権限の転送
・匿名のバックエンド API 実行
・弱いパスワードポリシー
・FaceID や TouchID などの機能の使用

M4: Insufficient Input/Output Validation (不十分な入力/出力値検証)
入力された値や外部入力値サーバから出力される値に対して、十分な検証処理が実施されていない場合に発生しうるリスクについて記載された項目です。

・レスポンスマニピュレーション
・不十分な入力バリデーション
・不十分な出力バリデーション
・コンテキストバリデーションの欠如
・データ完全性のバリデートの失敗

M5: Insecure Communication (安全でない通信)
これは、モバイルアプリが行う通信が平文で送信されていたり、非推奨の暗号化プロトコルが使用されていたりする場合、攻撃者による通信の盗聴等により、ユーザが入力した機密情報が漏えいしたり、通信の内容を改ざんされる可能性があります。
・非推奨なプロトコルや不適切なコンフィグレーション設定の使用
・不適切な SSL 証明書 (自己署名、失効、期限切れ、正しくないホストなど) の受け入れ
・非一貫性 (認証などの特定のワークフローでのみの SSL/TLS の使用)

M6: Inadequate Privacy Controls (不十分なプライバシー管理)
モバイルアプリを利用するうえで利用者が入力した個人情報が、十分に保護されていない場合、攻撃者にユーザの個人情報が漏えいし、ユーザに被害が及ぶことに加え、アプリ提供元企業としての信頼を損なう等の被害が発生する恐れがあります。

・PII は漏洩 (機密性の侵害)、操作 (完全性の侵害)、破壊/遮断 (可用性の侵害) のいずれかの可能性がある
・評判と信頼への損害の可能性がある
・コンプライアンス違反の可能性がある

M7: Insufficient Binary Protections (不十分なバイナリ保護)
これは、モバイルデバイス内にインストールされるアプリの実行ファイルに対して、十分な保護措置がとられていない場合、攻撃者はリバースエンジニアリングによって、実行ファイル内にハードコードされた重要情報を収集したり、ビジネスロジックを分析することで攻撃の足掛かりとなる情報を得ることができます。また、正規のアプリを改変した偽アプリを配布し、不正に利益を横取りされる恐れがあります。

・リバースエンジニアリング: アプリバイナリを逆コンパイルし、秘密鍵、アルゴリズム、脆弱性などの貴重な情報が取得できる場合
・コード改竄: アプリバイナリを操作して、ライセンスチェックを削除したり、ペイウォールを回避したり、ユーザーとして他の利益を得るなどが可能な場合

M8: Security Misconfiguration (セキュリティの誤設定)
これは、モバイルアプリのセキュリティ上の設定ミス(安全でない通信プロトコルの使用や、不要なパーミッションの付与、コンポーネントのアクセス設定不備など)がある場合に発生しうるリスクについて記載された項目です。
モバイルアプリにおいて設定ミスがある場合、攻撃者からそのミスにつけこんだ攻撃を受け、被害を受ける恐れがあります。

・安全でないデフォルト設定
・安全でないファイルパーミッション: world-readable や world-writable のパーミッションでアプリケーションファイルを保存
・セッション管理の設定ミス: 不適切なセッション管理により、セッションハイジャックを引き起こし、攻撃者が正規ユーザーになりすます可能性がある場合

M9: Insecure Data Storage (安全でないデータストレージ)
これは、モバイルアプリが扱うデータに対して、十分な保護措置がとられていない場合に発生しうるリスクについて記載された項目です。
扱うデータに対する保護が十分でない場合、ユーザが入力した重要情報が漏えいし、ユーザに被害が及ぶことに加え、アプリを提供する企業としての信頼を損なう等の被害が発生する恐れがあります。
・プレーンテキストファイルや保護されていないデータベースなど、デバイスのファイルシステム内の簡単にアクセスできる場所に機密情報を保存している

M10: Insufficient Cryptography (不十分な暗号化)
これは、モバイルアプリが扱うデータに対して、適切な暗号化処理(暗号化アルゴリズムの選択や鍵管理等)が行われていない場合に発生しうるリスクについて記載された項目です。
暗号化処理に不備がある場合、攻撃者によってデータを復号され、ユーザが入力した重要情報が漏えいする恐れがあります。
・弱い暗号アルゴリズム
・不十分な鍵長
・不適切な鍵管理: 暗号鍵を安全に保管していなかったり、プレーンテキストで転送しているなど、不適切な鍵管理
・欠陥がある暗号実装: 暗号/復号プロセス自体が正しく実装されていないか、プログラミングの欠陥がある
・ソルティングの欠如: やむを得ずファイルにパスワードなどの突合要素がある場合でソルティング (ハッシュ化する前に入力にランダムデータを追加するプロセス)に相当する保護がない場合

以上です。参考になれば幸いです。