大抵の場合、リモートサービスにユーザがログインすることは、一般的なモバイルアプリケーションアーキテクチャにとって必要不可欠です。たとえロジックのほとんどがエンドポイントで実行されるとしても、MASVSはユーザアカウントとセッションの管理方法に関するいくつかの基本的な要件を定義します。
# | 説明 | L1 | L2 |
---|---|---|---|
4.1 | ユーザがリモートサービスにアクセスするようなアプリの場合、ユーザ名/パスワード認証などの何かしらの認証がリモートエンドポイントで実施されている | ✓ | ✓ |
4.2 | ステートフルなセッション管理が用いられている場合、ユーザの資格情報を送信することなくクライアントリクエストを認証するために、リモートエンドポイントがランダムに生成されたセッション識別子を使用している | ✓ | ✓ |
4.3 | ステートレスなトークンベースの認証が用いられている場合、セキュアなアルゴリズムによって署名されたトークンをサーバが発行している | ✓ | ✓ |
4.4 | ユーザがログアウトしたときに、リモートエンドポイントが既存のセッションを破棄している | ✓ | ✓ |
4.5 | パスワードポリシーが存在しており、リモートエンドポイントで実施されている | ✓ | ✓ |
4.6 | 過剰な回数の資格情報の送信に対して保護するメカニズムをリモートエンドポイントが実装している | ✓ | ✓ |
4.7 | 生体認証がある場合、それがイベントバウンド(つまり、単に"true"や"false"を返すだけのAPIの使用)ではなく、キーチェーン/キーストアのアンロックに基づいている | ✓ | |
4.8 | 事前に定義された非アクティブの期間が経過すると、セッションがリモートエンドポイントで無効になり、アクセストークンの有効期限が切れる | ✓ | |
4.9 | リモートエンドポイントで認証における第二の要素が存在し、2FA(二要素認証)が一貫して施行されている | ✓ | |
4.10 | 機微なトランザクションにはステップアップ認証が必要である | ✓ | |
4.11 | アプリが全てのログイン動作をユーザに通知している。ユーザは、アカウントへのアクセスに使用するデバイスの一覧を表示したり、特定のデバイスをブロックしたりすることができる | ✓ |
OWASPモバイルセキュリティテストガイドには、本セクションに記載されている要件を検証するための詳細な手順が記載されています。
- For Android - https://github.com/OWASP/owasp-mstg/blob/master/Document/0x05f-Testing-Authentication.md
- For iOS - https://github.com/OWASP/owasp-mstg/blob/master/Document/0x06f-Testing-Authentication-and-Session-Management.md
詳細は以下を参照してください。