# モバイルアプリケーションセキュリティ検証標準

モバイルアプリケーションセキュリティ検証標準 (Mobile Application Security Verification Standard, MASVS) は Open Worldwide Application Security Project (OWASP) によって開発された包括的なセキュリティ標準です。このフレームワークはモバイルアプリケーションのセキュリティを評価し強化するための明確で簡潔なガイドラインとベストプラクティスを提供します。MASVS はモバイルアプリのセキュリティ検証のための指標、ガイダンス、ベースラインとして使用されるように設計されており、開発者、アプリケーションオーナー、セキュリティ専門家のための貴重なリソースとして機能します。

MASVS の目的は最も一般的なモバイルアプリケーションのセキュリティ問題に対処する一連のコントロールを提供することにより、モバイルアプリのセキュリティに高いレベルの信頼を確立することです。これらのコントロールはモバイルアプリの開発とテストのすべてのフェーズでガイダンスを提供すること、および調達時にモバイルアプリのセキュリティ検証のベースラインとして使用されることに重点を置いて開発されました。

OWASP MASVS で概説されているコントロールを遵守することで、組織はモバイルアプリケーションがセキュリティを考慮して構築され、セキュリティ侵害のリスクを軽減し、機密性の高いユーザーデータを保護していることを確保します。指標、ガイダンス、ベースラインのいずれとして使用されるかにかかわらず、OWASP MASVS はモバイルアプリケーションのセキュリティを強化するための非常に貴重なツールです。

OWASP MASVS は生きたドキュメントであり、変化する脅威の状況や新しい攻撃ベクトルを反映するために定期的に更新されます。そのため、標準の最新バージョンを [常に更新された状態に保ち](https://mas.owasp.org/MASVS/) 、それに応じてセキュリティ対策を適応されることが重要です。

## モバイルアプリケーションセキュリティモデル

本標準はモバイル攻撃対象領域の最も重要な領域を表すさまざまなグループに分かれています。これらのコントロールグループは **MASVS-XXXXX** とラベル付けされ、以下の領域のガイダンスと標準を提供します。

* **MASVS-STORAGE:** デバイス上の機密データの安全な保管 (保存データ (data-at-rest)) 。
* **MASVS-CRYPTO:** 機密データを保護するために使用される暗号機能。
* **MASVS-AUTH:** モバイルアプリで使用される認証と認可のメカニズム。
* **MASVS-NETWORK:** モバイルアプリとリモートエンドポイント間の安全なネットワーク通信 (転送中データ (data-in-transit)) 。
* **MASVS-PLATFORM:** 基盤となるモバイルプラットフォームおよび他のインストール済みアプリとの安全な連携。
* **MASVS-CODE:** データ処理とアプリを最新に保つためのセキュリティベストプラクティス。
* **MASVS-RESILIENCE:** リバースエンジニアリングと改竄の試みに対する耐性。
* **MASVS-PRIVACY:** ユーザープライバシーを保護するためのプライバシーコントロール。

これらのコントロールグループにはそれぞれ **MASVS-XXXXX-Y** というラベル付けされた個別のコントロールがあり、標準を満たすために実装する必要がある特定のセキュリティ対策に関する具体的なガイダンスを提供します。

## MAS テストプロファイル

MAS プロジェクトは従来三つの検証レベル (L1, L2, R) を提供してきましたが、2023 年の MASVS リファクタリングで見直し、[「MASテストプロファイル」](https://docs.google.com/document/d/1paz7dxKXHzAC9MN7Mnln1JiZwBNyg7Gs364AJ6KudEs/edit?usp=sharing)として作り直し、OWASP MASTG に移行されました。これらのプロファイルは情報システムを保護するために使用できるセキュリティコントロールの包括的なカタログである [NIST OSCAL (Open Security Controls Assessment Language)](https://pages.nist.gov/OSCAL/) 標準と整合するようになりました。

OSCAL と整合することで、MASVS はセキュリティテストへのより柔軟で包括的なアプローチを提供します。OSCAL はセキュリティコントロール情報の標準フォーマットを提供し、さまざまなシステムや組織間でセキュリティコントロールの共有と再利用が容易になります。これによりリソースをより効率的に使用し、モバイルアプリのセキュリティテストにより的を絞ったアプローチを可能にします。

ただし、これらのプロファイルの全面的あるいは部分的な導入にはビジネスオーナーと協議の上、リスクに基づいて決定されるべきであることに留意することが重要です。プロファイルは開発中のモバイルアプリケーションの特定のセキュリティリスクと要件に合わせて調整すべきであり、推奨されるコントロールからの逸脱は慎重に正当化し文書化すべきです。

## 前提

MASVS を使用する際に、以下の前提を念頭に置くことが重要です。

* MASVS はセキュアコーディングやセキュア SDLC などのセキュア開発ベストプラクティスに従うことに代わるものではありません。これらのプラクティスは開発プロセスにおいて全体的に従うべきであり、MASVS はモバイルアプリに特化してそれらを補完します。
* MASVS はバックエンドサーバー、IoT、その他のコンパニオンデバイスなどのアプリのエコシステムのすべての要素について業界や国の関連する標準に従っていることを前提としています。
* MASVS はアプリパッケージを取得して静的に解析でき、潜在的に危殆化したデバイス上で動的に実行できるモバイルアプリのセキュリティを評価するように設計されており、MITM のようなネットワークベースの攻撃も考慮しています。

OWASP MASVS はモバイルアプリケーションのセキュリティを強化する貴重なツールですが、絶対的なセキュリティを保証するものではありません。セキュリティ要件のベースラインとして使用すべきですが、モバイルアプリに対する特定のリスクや脅威に対処するために、追加のセキュリティ対策も必要に応じて実装すべきです。

### モバイルアプリのセキュリティアーキテクチャ、設計、脅威モデリング

> OWASP MASVS はセキュアアーキテクチャ、設計、脅威モデリングのベストプラクティスを基本として守っていることを前提としています。

初期の計画と設計フェーズからデプロイメントや継続的なメンテナンスに至るまで、モバイルアプリ開発のすべてのステージにおいてセキュリティは最優先でなければなりません。開発者はセキュア開発のベストプラクティスに従い、機密データの保護、ポリシーや規制の準拠、攻撃者から狙われやすいセキュリティ問題の特定と対処のために、セキュリティ対策が優先されるように確保する必要があります。

MASVS と MASTG はアプリのセキュリティ評価のためのコントロールと技術的なテストケースに焦点を当てていますが、 [OWASP Software Assurance Maturity Model (SAMM)](https://owaspsamm.org/model/) や [NIST.SP.800-218 Secure Software Development Framework (SSDF)](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-218.pdf) で示される、セキュアアーキテクチャ、設計、脅威モデリングに関するベストプラクティスに従うなどの非技術的側面は依然として重要です。MASVS は脅威モデルの参照や入力として使用して、潜在的な攻撃に対する意識を高めることもできます。

これらのプラクティスが確実に守られるようにするために、開発者は設計ドキュメント、脅威モデル、セキュリティアーキテクチャ図などのこれらの標準に準拠していることを示すドキュメントや証跡を提供できます。さらに、インタビューを実施することで、これらのプラクティスの遵守に関する情報を収集し、これらの標準の遵守レベルを把握できます。

### セキュアアプリエコシステム

> OWASP MASVS はアプリの運用に関わるすべてのシステムが該当する要件を満たしていることを確保するために、他の関連するセキュリティ標準も活用することを前提としています。

モバイルアプリは多くの場合、バックエンドサーバー、サードパーティ API、Bluetooth デバイス、自動車、IoT デバイスなど、複数のシステムと連携します。これらのシステムはそれぞれ独自のセキュリティリスクをもたらす可能性があり、モバイルアプリのセキュリティ設計と脅威モデリングの一部として考慮する必要があります。たとえば、バックエンドサーバーと連携する際には [OWASP Application Security Verification Standard (ASVS)](https://owasp.org/www-project-application-security-verification-standard/) を使用して、サーバーがセキュアであり、必要なセキュリティ標準を満たしていることを確認する必要があります。Bluetooth デバイスの場合、認可されていないアクセスを防止するようにアプリを設計する必要があり、自動車の場合、ユーザーのデータを保護し、その自動車の運転に安全上の問題がないことを確保するように設計する必要があります。

### セキュリティ知識と経験

> OWASP MASVS は本標準を使用する開発者やセキュリティ専門家に一定レベルのセキュリティ知識と経験を想定しています。モバイルアプリのセキュリティの概念と、モバイルアプリのセキュリティテストと評価に使用される関連ツールや技法をよく理解していることが重要です。これをサポートするために、OWASP MAS プロジェクトは [OWASP Mobile Application Security Testing Guide (MASTG)](https://mas.owasp.org/MASTG/) も提供し、モバイルアプリのセキュリティテストと評価に関する詳細なガイダンスを提供しています。

モバイルアプリ開発は急速に進化している分野であり、新しいテクノロジ、プログラミング言語、フレームワークが絶えず出現しています。開発者やセキュリティ専門家はこれらの開発の時流に乗り遅れないようにし、基本的なセキュリティ原則の基礎を固めることが不可欠です。

OWASP SAMM はソフトウェア開発ライフサイクルに関わるすべての利害関係者がソフトウェアセキュリティリスクを認識し、これらのリスクを軽減するための知識とスキルを備えていることを確保することを目的とした、専用の ["Education & Guidance"](https://owaspsamm.org/model/governance/education-and-guidance/) ドメインを提供します。これには開発者、テスト担当者、アーキテクト、プロジェクトマネージャー、経営者、その他のソフトウェア開発とデプロイメントに関わる人たちが含まれます。

## MASVS の適用性

MASVS に準拠することで、使用する開発アプローチに関係なく、企業や開発者はモバイルアプリをセキュアに保ち、業界標準のセキュリティ要件を満たすようにできます。これはプロジェクトが従来対象としていたダウンロード型アプリに当てはまりますが、MAS リソースとガイドラインはプリロード型アプリケーションや SDK などのビジネスの他の領域にも適用できます。

### ネイティブアプリ

ネイティブアプリは Android では Java や Kotlin 、iOS では Objective-C や Swift など、プラットフォーム固有の言語で記述されます。

### クロスプラットフォームアプリとハイブリッドアプリ

クロスプラットフォーム (Flutter, React Native, Xamarin, Ionic など) およびハイブリッド (Cordova, PhoneGap, Framework7, Onsen UI など) フレームワークをベースとするアプリはネイティブアプリには存在しないプラットフォーム固有の脆弱性の影響を受けることがあります。たとえば、JavaScript フレームワークの中には他のプログラミング言語には存在しない新たなセキュリティ問題をもたらすものがあるかもしれません。そのため、使用するフレームワークのセキュリティベストプラクティスに従うことが不可欠です。

MASVS は開発するモバイルアプリケーションの種類に依存しません。これは MASVS で概説されているガイドラインとベストプラクティスが、クロスプラットフォームアプリやハイブリッドアプリを含むあらゆる種類のモバイルアプリに適用できることを意味します。

### プリロード

プリロード型アプリとは工場出荷時にユーザーのデバイスにインストールされているアプリであり、ユーザーは悪用されやすいビジネスプラクティスに脆弱となる、昇格した権限を持っている可能性があります。平均的なユーザーのデバイスには多数のプリロード型アプリがあるため、そのリスクを定量的に測定することが重要です。

デバイスには何百ものプリロードが搭載されている可能性があるため、その結果として、自動化が不可欠となります。自動化に適した MAS 基準のサブセットはよい基準となるかもしれません。

### SDK

SDK はモバイルアプリのバリューチェーンにおいて重要な役割を果たし、開発者がより速く、より賢く、より収益性の高いものを構築するために必要なコードを供給しています。平均的なモバイルアプリは 30 の SDK を使用し、コードの 90% はサードパーティから調達しているため、開発者は SDK に大きく依存しています。このような広範な使用は開発者に大きな利益をもたらしますが、一方で安全性やセキュリティの問題もはらんでいます。

SDK はさまざまな機能を提供するものであり、個別のプロジェクトと捉えるべきです。使用する SDK に MASVS をどのように適用するかを評価して、可能な限り高いセキュリティテストカバレッジを確保すべきです。
