モバイルアプリケーション環境を理解する
学習の目的
この単元を完了すると、次のことができるようになります。
- モバイルアプリケーションの環境について説明する。
- モバイルアプリケーションセキュリティの必要性について説明する。
- モバイルアプリケーションセキュリティの用語を定義する。
- Web とモバイルのアプリケーションセキュリティの違いを理解する。
- モバイルアプリケーションの攻撃面について説明する。
始める前に
「アプリケーションセキュリティの基本」および「Application Security Engineer Responsibilities (アプリケーションセキュリティエンジニアの責任)」モジュールを修了している方は、アプリケーションセキュリティとアプリケーションセキュリティエンジニアがアプリケーションを保護する方法についてすでに理解しています。ここでは、モバイルアプリケーションのサイバーセキュリティを強化する方法を学習します。
モバイルアプリケーションの環境
スマートフォンには、4K 動画の撮影、外国語の翻訳、口述の書き取り、心拍数の監視など驚くべき機能があります。テクノロジーが急速に進歩し、人工知能 (AI)、ブロックチェーン、第 5 世代移動通信システム (5G) のようなテクノロジーのインテグレーションにより、モバイルアプリケーション (アプリ) に対する考え方は根本的に変わりました。
モバイルアプリケーション開発者が実質的にあらゆるデバイスで稼働する革新的なアプリケーションを作成するには、目まぐるしく変わるトレンドを常に把握し、新しい技術知識を持つことが鍵となります。アプリケーションの開発を目指す人にとって、サイバーセキュリティへの意識を高めることもかつてなく重要になっています。
モバイルデバイスとモバイルアプリケーションの利用が広がり続けているため、モバイルファースト設計戦略にシフトする企業が増えています。モバイルファーストとは、設計プロセスを最も画面の小さいモバイルから始めることで、ユーザーにとってより使いやすいエクスペリエンスを作成するという考え方です。ほとんどの顧客は企業と最初にやりとりするときにスマートフォンかタブレットを使用しますが、こうしたデバイスのセキュリティには独自の複雑さがあるため、包括的なモバイルアプリケーションセキュリティ (AppSec) 戦略が必要になります。Web サイトの設計とプロトタイピングをモバイルデバイスファーストで行うと、デバイス間でシームレスなユーザーエクスペリエンスを実現できます。
モバイル AppSec の必要性
今日、どの大手企業にも顧客とより簡単につながるためのモバイルアプリケーションがあります。また、ますます多くのユーザーが、ニュースの視聴、メールやソーシャルメディアのチェックからネットショッピングや銀行取引に至るまで、大半のデジタルタスクにモバイルアプリケーションを使用しています。
こうしたモバイルアプリケーションには大量の機密データへのアクセス権があります。これは不正アクセスから保護する必要があるデータです。企業はこれらのアプリケーションを通じて、場所、使用統計、電話番号、高評価、低評価、ユーザーに関するその他の関連評価指標など、役に立つ情報を収集できます。このようなモバイルアプリケーションのデータが悪人の手に渡ると、ユーザーに損害が及ぶことがあります。
セキュリティプロフェッショナルは組織のモバイル AppSec リスクを軽減することを目標とします。モバイル AppSec とは、高価値のモバイルアプリケーションとデジタル ID を攻撃から守ることです。攻撃には、デバイス改ざん、リバースエンジニアリング、マルウェア、キーロガー、その他の形態の改ざんや妨害などがあります。開発者やセキュリティプロフェッショナルは、モバイルアプリケーションを標的にする多くの脅威を考慮しなければなりません。
モバイル AppSec 用語を定義する
先に進む前に、一般的なモバイル AppSec 用語に慣れておきましょう。
用語 |
定義 |
---|---|
API |
2 つのアプリケーションが相互に通信できるようにするソフトウェアの仲介手段 |
認証 |
個人が本人であると確認すること |
承認 |
本人と確認された個人にアクションを実行するために必要な権限があるかチェックすること |
バッファ |
データを保持するために確保されているメモリ領域 (プログラムのセクション間やプログラム間でデータを移動するときに使用されることが多い) |
バッファオーバーフロー |
プログラムがデータをバッファに書き込んでいるときにバッファの境界を越えてメモリ内の隣接する場所を上書きしてしまう異常な状況 |
開発プラットフォーム |
開発者が適切なテックスタックに基づいてソフトウェアアプリケーションを開発できるようにする標準のセット |
動的テスト |
コードのランタイム動作を分析するために実行するソフトウェアテスト手法 |
静的テスト |
ソフトウェアアプリケーションのコードを実際に実行することなく、ソフトウェアの不具合を検出するためにアプリケーションのソースコードを評価するソフトウェアテスト手法 |
ユーザーエクスペリエンス (UX) 設計 |
アプリケーションをよりシンプルで一体感のある、ユーザーが操作しやすいものにすることに重点を置いた設計アプローチ |
Web と モバイルの AppSec 比較
Web アプリケーションとは、Web サイト上で実行され、インターネットブラウザー経由でユーザーからアクセスされるアプリケーションです。Web アプリケーションはダウンロード可能アプリケーションのように機能しますが、スマートフォンのブラウザーのコンテキストで実行されます。Web アプリケーションは表示されている任意のデバイスに適応します。特定のシステムにネイティブということはなく、ダウンロードやインストールは必要ありません。
モバイル AppSec は Android や iOS のようなプラットフォーム上のモバイルアプリケーションのソフトウェアセキュリティ対応に重点を置いています。スマートフォンとタブレットで実行されるアプリケーションが対象となります。アプリケーションが実行されるプラットフォーム、開発に使用されるフレームワーク、予想されるユーザー (従業員、エンド ユーザーなど) のコンテキストでセキュリティ問題がないかアプリケーションが評価されます。モバイルアプリケーションではユーザーに関して Web ブラウザーよりもはるかに多くの情報 (場所、生体認証、動画および音声データなど) を収集できます。
Web アプリケーションとモバイルアプリケーションの違いを詳しく見てみましょう。
コード
Web アプリケーションには、攻撃者がアクセスできないサーバーに機密性の高いコードをホストするオプションがあります。一方、モバイルアプリケーションではクライアントデバイス上に相当量のコード (ロジックとデータを含む) が置かれます。モバイルアプリケーションは基本的に広く一般に提供されるコードであり、攻撃面は Web アプリケーションよりも広くなります。これは、アプリケーションを公開ストアからダウンロードでき、コードインスペクションが可能であるためです。
ネットワーク
Web アプリケーションでは、ブラウザーが TLS (トランスポートレイヤーセキュリティ) と HTTPS (ハイパーテキストトランスファープロトコルセキュア) を処理してコンピューターネットワーク上の通信を保護します。モバイルアプリケーションでは、アプリケーションにネットワークコールをセキュアにコーディングする必要があります。モバイル AppSec エンジニアは機密データを保護しながら、TLS や HTTPS などの安全な通信方法が使用されていることを確認して、モバイルデバイス通信会社のネットワークとインターネットを移動する必要があります。
メモリ
Web アプリケーションでは、ブラウザーがデータをローカルマシンのメモリやファイルから分離します。モバイルアプリケーションでは、アプリケーションがローカルファイルやメモリを適切に処理する必要があります。つまり、モバイル AppSec エンジニアはバッファオーバーフロー (プログラムがデータをメモリ領域に書き込んでいるときに境界を越えてメモリ内の隣接する場所を上書きしてしまうこと) のような異常な状況に対して防御する必要があります。
セグメンテーション
Web アプリケーションでは、ブラウザーの Sandbox がデータとロジックを互いと分離します。モバイルアプリケーションでは、共有またはオープンストレージの場所に書き込むことで、互いにデータを共有できます。モバイルアプリケーションをサーバーに接続してデータを送信するバックエンド API が適切に保護されていなければ、機密性の高い医療、金融、および個人データが暴露される可能性があります。
モバイルアプリケーションの攻撃面
攻撃面とは、攻撃者がアプリケーションに侵入してデータを抜き出せるさまざまなポイントのすべてを意味します。モバイルアプリケーションの攻撃面には次のようなものがあります。
-
送信中のデータ: アプリケーションに出入りするデータとコマンドのすべてのパスの集合
-
こうしたパスを保護するコード: リソース接続と認証、承認、活動ログ、データ検証、エンコーディング
-
保存中のデータ: アプリケーションで使用され、保存されるすべての価値あるデータ (秘密と鍵、知的財産、重要なビジネスデータ、個人識別情報 (PII) を含む)
-
このデータを保護するコード: 暗号化とチェックサム、アクセス監査、データ整合性、オペレーショナルセキュリティコントロール
-
バックエンド API: サービスを接続してデータを送信するために使用されるインターフェース
セキュリティプロフェッショナルは、モバイルアプリケーションの攻撃面全体を徹底的に評価する必要があります。攻撃者にとってモバイルアプリケーションは常に関心をひく攻撃面です。主要なモバイルプラットフォームでは、開発者がセキュアなアプリケーションを作成できるように設計された独自のセキュリティコントロールのセットが提供されていますが、さまざまなセキュリティコントロールからどれを選ぶかは大抵、開発者次第です。セキュリティ機能が開発者によって入念に調査されていなければ、攻撃者が簡単に迂回できるような方法で実装されてしまうこともあり得ます。
まとめ
これで、モバイル環境、モバイル AppSec の必要性、モバイル AppSec の用語について理解できました。次の単元では、モバイル AppSec エンジニアの責任と、成功に役立つスキルについて学習します。
リソース
-
Trailhead: アプリケーションセキュリティの基本
-
Trailhead: モバイル戦略開発
-
外部サイト: Open Web Application Security Project® (OWASP): Attack Surface Analysis Cheat Sheet (攻撃面分析早見表)
-
外部サイト: Fortinet: Attack Surface (攻撃面)
-
PDF: National Institute of Standards and Technology (NIST): Vetting the Security of Mobile Applications (モバイルアプリケーションのセキュリティ調査)