In this article
モバイルアプリケーションセキュリティテスト(MAST)—課題とツール
モバイルアプリケーションセキュリティテストの主な課題とツール
モバイルアプリケーションセキュリティテスト(MAST)は、あらゆる組織のモバイルアプリケーションセキュリティ戦略に取り入れるべきものです。モバイルアプリがユーザーの手に渡る前後に、脆弱性を見つけてリスクを軽減する実践的な方法となります。ここでは、MASTを実施するためのヒントやよくある課題、業界のベストプラクティスとツールなど、モバイルアプリケーションセキュリティテストの重要性について知っておくべきことをすべてご紹介します。Snykのアプリケーションセキュリティソリューションは、AndroidとiOSの開発言語を幅広くカバーし、MASTの導入を支援します。
モバイルアプリケーションセキュリティテストとは?
モバイルアプリケーションセキュリティテストでは、モバイルOS(Android、iOS、Windows 10 Mobileなど)にインストールされたアプリケーションに存在する可能性のあるリスクや脆弱性を評価します。
OWASP Mobile Security Testing Guideでは、「モバイルアプリセキュリティレビュー」などの類似した用語がMASTを指す場合があると説明されています。効果的なMASTの脆弱性分析には、静的解析、動的解析、侵入テストが含まれます。
モバイルアプリケーションセキュリティでテストが重要なのはなぜですか?
2022年には、世界で4分の1兆を超える(2,550億件の)モバイルアプリがダウンロードされました。この数は2023年には約3,000億件に達すると予測されています。モバイルデバイスは、メールやソーシャルメディアなど多様なデータソースにアクセスでき、マイク、カメラ、位置情報などの幅広い機能を備え、認証プロセス(2FA、MFA)にも使われるため、価値の高い標的です。また、オープン性を備えるAndroidは、特に脆弱性の影響を受けやすいOSです。
組織は新しいアプリを絶えずリリースし、既存アプリを更新しています。そのたびに、脅威アクターが大量の機密情報にアクセスする機会が生まれるため、モバイルアプリケーションセキュリティは企業のサイバーセキュリティプログラムの中核となっています。
MASTは、セキュアなアーキテクチャの設計、セキュアコーディングの実践、機密データの保存を最小限に抑えることなど、他の対策と並んで、堅牢なモバイルアプリケーションセキュリティ戦略を構成する手法の1つです。
モバイルアプリケーションセキュリティには、改善の余地が大きく残されている企業が少なくありません。大規模な調査によると、モバイルアプリの4分の3に、少なくとも1つの中程度のセキュリティ脆弱性が含まれています。
モバイルアプリケーションセキュリティテストにはどのような手法がありますか?
モバイルアプリケーションセキュリティテストでよく使われる手法には、次のようなものがあります。
手動テスト:人間のテスターがアプリケーションを実際に操作して、脆弱性を特定します。設計上の欠陥やビジネスロジックのエラーなど、抽象度の高いアプリケーションの問題を検出するのに適しています。
自動テスト:自動化されたMASTソリューションでアプリケーションコードをスキャンし、潜在的な脆弱性を検出することで、開発チームがセキュリティリスクをできるだけ早く特定できるようにします。迅速性、正確性、拡張性、費用対効果などのメリットもあります。
バグバウンティ:組織の環境内にある脆弱性を特定して報告したセキュリティ研究者や倫理的ハッカーに、金銭的な報酬やその他のインセンティブを提供します。
クラウドソースによる脆弱性の開示:バグバウンティと似ていますが、セキュリティ上の欠陥を非公開で報告するのではなく、一般に公開します。開発者が脆弱性を修正する方法について、推奨事項が含まれる場合もあります。
企業は、モバイルアプリケーションセキュリティテストに複数の手法を組み合わせて活用することがよくあります。たとえば、多くの組織ではテストの大部分に自動化ツールを使い、ロジックや意図を確認する手動レビューを併用し、さらにセキュリティを強化するために継続的なバグバウンティプログラムを運用しています。MASTと組み合わせて利用できる、その他の補完的なモバイルアプリケーションセキュリティ対策には、脅威モデリング、コンプライアンステスト、レッドチームによる攻撃シミュレーションなどがあります。
モバイルアプリケーションセキュリティテストにはどのようなツールを使えますか?
モバイルアプリケーションセキュリティテストで特によく推奨されるツールは、SAST、DAST、IAST、SCA、ファジングの各ツールです。
各ツールのカテゴリについて、簡単にご紹介します。
静的アプリケーションセキュリティテスト(SAST)ツールは、アプリケーションのソースコードをスキャンして脆弱性を特定します。CI/CDパイプラインの早い段階や、コーディング中にIDEプラグインとして実行できます。SASTは「ホワイトボックス」テストの一例です。アプリケーションの内部設計に関する知識を考慮してテストします。
動的アプリケーションセキュリティテスト(DAST)ツールは、稼働中のアプリケーションに一般的な攻撃を試し、実行時のセキュリティを確認します。アプリケーションが動作している必要があるため、開発プロセスのかなり後半にならないと利用できません。DASTは「ブラックボックス」テストの一例です。外部からの想定のみに基づき、アプリケーションの内部情報は考慮しません。
インタラクティブアプリケーションセキュリティテスト(IAST)ツールは、アプリケーションのスキャンと内部フローの分析を通じて、実行時のセキュリティを確認します。DASTのような検出結果(回帰の特定など)をSASTツールのようにソースコードに関連付けるため、ホワイトボックステストとブラックボックステストを組み合わせた手法です。
ソフトウェア構成分析(SCA)ツールは、サードパーティのコード依存関係を追跡するもので、多くのオープンソースライブラリを組み込むアプリに役立ちます。開発者は、関連するアプリケーションの各コンポーネントやそれを支えるライブラリ、直接的・間接的な依存関係をすべて把握し、脆弱性や悪用の可能性を検出できます。
ファジングツールは、アプリケーションに不正または予期しない入力を自動的に与えて、バグを検出します。ファジングは、予期しない動作やクラッシュ、リソースリークを引き起こす目的でアプリケーションに過剰な負荷をかける、ブラックボックステストの手法です。
モバイルアプリケーションセキュリティテストでよくある課題は何ですか?
モバイルアプリケーションセキュリティでよくある課題には、プラットフォームの断片化、言語のサポート範囲、モバイルDASTツールの調達の難しさ、シミュレーションテストに頼りがちなことなどがあります。
プラットフォームの断片化とは、アプリケーションがさまざまなOSやデバイスで実行されることです。場合によっては、異なるプラットフォームだけでなく、同じOSの異なるバージョンでもセキュリティテストが必要です(サードパーティメーカーが独自のOSバージョンを提供するAndroidでは、特に一般的です)。
言語のサポート範囲も課題になることがあります。組織が利用するMASTツールセットが、特定の言語、とりわけJava、Kotlin、Objective C、Swiftのようなプラットフォーム非依存の言語に対応していない場合です。ハイブリッドモバイルアプリでは、ネイティブ開発に伴うセキュリティリスクに、Webアプリケーションのリスクも加わります。
DASTツールの調達の難しさもよくある課題です。多くのテストフレームワークは、モバイルアプリケーションセキュリティを想定して設計されていないためです。こうしたフレームワークは改善されつつありますが、モバイルDAST向けの実環境データを入手するのは、今でも困難な場合があります。
シミュレーションテストに頼りがちなのは、手軽さから開発者によく見られる傾向ですが、それだけでは包括的なテストになりません。シミュレーションテストは出発点として有効ですが、ユーザー体験や実際の脆弱性シナリオをより正確に再現するには、実機でのテストが重要です。
モバイルアプリケーションセキュリティテストのベストプラクティス
MASTの具体的な実施方法は、組織や独自のモバイルアプリケーションセキュリティ戦略によって異なりますが、実績のある次のプラクティスが、前述のよくある課題の克服に役立ちます。
MASTをモバイルCI/CDパイプラインに組み込むことで、シフトレフトセキュリティのメリットを活用できます。セキュリティ態勢や統合の改善に加え、スピード向上とコスト削減にもつながります。
確立されたセキュリティフレームワークを活用しましょう。OWASPやMobile Security Testing Guideを参照することで、よくある問題を見つけ、セキュリティ専門家がすでに行った広範な調査を活用できます。
SAST、DAST、SCAなど、複数のテスト手法を使うことが重要です。前述のとおり、テストごとに対応するセキュリティ上の問題やシナリオは異なります。
モバイルアプリケーションを継続的にテストすることで、新たな脆弱性を特定できます。アプリを最初に開発したときに安全だったからといって、今も安全とは限りません。
テストを念頭に置いて開発するために、開発プロセス中にコードやウィジェットに注釈を付けておきましょう。特に動的テストなど、後のテストを管理しやすくなります。
適切な自動スキャンツールを選ぶ際は、補完的な機能を備えているか確認しましょう。CI/CDパイプラインにスムーズに統合でき、必要なモバイルアプリのプログラミング言語をカバーし、誤検知を抑えられるツールを選ぶことが大切です。
モバイルアプリケーションのバックエンドセキュリティもおろそかにしないようにしましょう。フロントエンドが安全でも、接続先や利用するデータに脆弱性が含まれていないことを確認する必要があります。
多様なデバイスでテストすることで、端末ごとのコンポーネントの違いに対応できます。プロセスを効率化するため、自動化の活用も検討しましょう。
Mobile Security Testing Guideの序文にもあるように、MASTのスキルを高め、MASTツールを使いこなす最善の方法は、実際に経験を積むことです。「モバイルアプリケーションセキュリティを真に極めるには、モバイルOS、コーディング、ネットワークセキュリティ、暗号技術など、さまざまな分野を深く理解する必要があります。」
Snykでモバイルアプリケーションセキュリティテストを強化
MASTプロセスを改善したいとお考えですか?Snykプラットフォームは、SASTとSCAを組み合わせたモバイルアプリケーションセキュリティアプローチを提供します。開発者とセキュリティチームは、コード内のセキュリティ問題とオープンソース依存関係に含まれる既知の脆弱性を、すばやく検出、優先順位付け、修正できます。
自動スキャンを開発プロセスの早い段階に移すことで、モバイルアプリがユーザーの手に渡る前にセキュリティを大幅に強化できます。シフトレフトセキュリティや、包括的なテスト戦略におけるMASTの役割について詳しく知りたい方は、アプリケーションセキュリティテストガイドをご覧ください。