序文
技術革新は迅速に起こります。一昔前、スマートフォンは小さいキーボードを持つ魅力のない端末、技術に精通したビジネスユーザーのための高価な玩具でした。今日、スマートフォンは私たちの生活に不可欠なものです。私たちは情報、ナビゲーション、コミュニケーションのためにそれらに頼っています。ビジネスや社会生活の中の至るところにあります。
すべての新しいテクノロジーは新しいセキュリティリスクをもたらし、その変化に対応することはセキュリティ業界が直面する主要な課題のひとつです。防御側は常に数ステップ遅れます。例えば、多くのデフォルトの対応は物事をなすための古い方法を適用することでした。スマートフォンは小さなコンピュータと似ており、モバイルアプリはクラシックなソフトウェアと同様ですから、確かにセキュリティ要件は似ているでしょう?しかしそのようにはいきません。スマートフォンのオペレーティングシステムはデスクトップオペレーティングシステムとは異なりますし、モバイルアプリはウェブアプリとは異なります。例えば、従来の手法であるシグネチャベースのウイルススキャンは最新のモバイルOS環境では意味を成しません。モバイルアプリの配信モデルと互換性がないだけでなく、サンドボックスの制限により技術的にも不可能です。また、バッファオーバーフローやXSSの問題などいくつかの脆弱性クラスは、デスクトップアプリやWebアプリケーションよりも(例外はありますが)一般的なモバイルアプリのコンテキストではあまり意味がありません。
時間の経過と共に、私たちの業界はモバイル脅威の状況を把握してきました。結局のところ、モバイルセキュリティはデータ保護に関するすべてのことです。アプリは私たちの個人情報、写真、録音、メモ、アカウントデータ、ビジネス情報、位置などを保存します。アプリは私たちが毎日使っているサービスに接続するクライアントとして動作しており、それぞれすべてのメッセージを処理するコミュニケーションハブとして他の人とやり取りします。人のスマートフォンに侵入し、その人の人生にアクセスすることができます。モバイルデバイスがとてもたやすく失くしたり盗まれたりし、モバイルマルウェアが増加していることを考えるとき、データ保護の必要性がさらに明らかになります。
したがってモバイルアプリのセキュリティ標準はモバイルアプリが機密情報を処理、保存、保護する方法に焦点を当てる必要があります。iOSやAndroidなどの最新のモバイルオペレーティングシステムでは安全なデータストレージと通信のための成熟したAPIを提供していますが、効果を発揮するには正しく実装され使用されている必要があります。データストレージ、アプリ間通信、暗号APIの適切な使い方や安全なネットワーク通信は慎重な検討が必要な局面のほんの一部です。
データの機密性と完全性を保護するためにどれだけ正しく行うべきかが業界のコンセンサスを必要とする重要な質問です。例えば、私たちの多くはモバイルアプリがTLSエクスチェンジの中でサーバー証明書を検証する必要があることに同意します。しかし証明書や公開鍵のピンニングはどうでしょう?それを行わないと脆弱性が生じるでしょうか?アプリが機密データを処理する場合にそれを要件とすべきでしょうか、それとも逆効果でしょうか?OSがアプリをサンドボックス化していても、SQLiteデータベースに格納されるデータを暗号化する必要があるでしょうか?あるアプリに適切なものでも別のアプリには非現実的かもしれません。MASVS はさまざまな脅威シナリオにあうプロファイルを使用してこれらの要件を標準化する試みです。
さらに、ルートマルウェアやリモート管理ツールの登場によりモバイルオペレーティングシステム自体に悪用可能な欠陥が存在することが認識されています。そのため、機密性の高いデータへの追加保護を提供し、クライアント側の改竄を防止するために、コンテナ化戦略がますます使用されています。物事は複雑に入り組んでいます。ハードウェア支援のセキュリティ機能や Android Enterprise や Samsung Knox などの OS レベルのコンテナ化ソリューションが存在しますが、さまざまなデバイスの間で一貫して利用できるわけではありません。バンドエイドとして、ソフトウェアベースの保護対策を実装できますが、残念ながら、このような種類の保護を検証するための標準やテストプロセスはありません。
結果として、モバイルアプリセキュリティテストレポートは混沌としてます。例えば、あるテスト技術者はセキュリティ上の欠陥としてAndroidアプリでの難読化やルート検出の欠如を報告しています。一方、文字列の暗号化、デバッガの検出、制御フローの難読化などの処置は必須ではありません。しかし、このような二元的な方法は理にかなっていません。耐性は二元的な命題ではないためです。これは守ることを目指す特定のクライアント側の脅威に依存します。ソフトウェア保護は無駄ではありませんが、最終的にバイパスすることが可能であるため、ソフトウェア保護をセキュリティコントロールの代わりに使用してはいけないということです。
MASVSの全体的な目標はモバイルアプリケーションセキュリティのベースラインを提供することであり、多層防御処置やクライアント側の脅威に対する保護も可能にします。MASVSは以下を達成するためのものです。
セキュアなモバイルアプリケーションを開発しようとするソフトウェアアーキテクトや開発者に要件を提供する
モバイルアプリのセキュリティコードレビューとしてテストできる業界標準を提供する
モバイルセキュリティにおけるソフトウェア保護メカニズムの役割を明確にして、その有効性を検証するための要件を提供する
さまざまなユースケースに対してどのレベルのセキュリティが推奨されるかに関する具体的な推奨を提供する
私たちは100%の業界のコンセンサスが達成不可能であることを認識しています。それでも、私たちはMASVSがモバイルアプリの開発やテストのすべてのフェーズでガイダンスを提供するのに役立つことを願っています。オープンソース標準として、MASVSは時間の経過と共に進化するでしょう。そして、私たちは寄稿や提案を歓迎します。
Bernhard Mueller より
Last updated