OWASP ASVS 4.0
管理目標 †
認証とは、誰か (あるいは何か) を真正であるとして確立または確認する行為であり、個人またはデバイスの要求は正しく、なりすましに耐性があり、パスワードのリカバリや傍受を防ぐことです。
ASVS が最初にリリースされたとき、ユーザ名 + パスワードは高度なセキュリティシステム以外で最も一般的な認証形式でした。多要素認証 (MFA) はセキュリティサークルで一般的に受け入れられていますが、他ではほとんど必要とされていませんでした。パスワード侵害の数が増加するにつれ、ユーザ名は何かしらの形で機密情報であり、パスワードは不明であるという考えでは、多くのセキュリティ管理策は維持できなくなりました。例えば、NIST 800-63 はユーザ名とナレッジベース認証 (KBA) を公開情報、SMS および電子メール通知を「制限された」オーセンティケータタイプ、パスワードをすでに侵害されたものと考えています。この現実は、知識ベースのオーセンティケータ、SMS および電子メールでのリカバリ、パスワード履歴、複雑さ、ローテーション管理が役に立たないと言っています。これらの管理はまったく役に立たず、ユーザは数か月ごとに脆弱なパスワードを考えてきましたが、50億を超えるユーザ名とパスワード侵害が公表されています。今が前進するときです。
ASVS のすべての章の中で、認証とセッション管理の章が最も変更されています。効果的で、エビデンスベースのリーディングプラクティスの採用は多くの人にとって挑戦となるでしょうが、それはまったくいいことです。今ここでポストパスワードの未来へ、移行を始める必要があります。
NIST 800-63 - 最新のエビデンスベースの認証標準 †
NIST 800-63b は最新のエビデンスベースの標準であり、適用可能性とは関係なく、利用可能な最適なアドバイスを表しています。この標準は世界中のすべての組織に役立ちますが、特に米国の代理店および米国の代理店を扱う組織に関連します。
NIST 800-63 の用語は、特にユーザ名 + パスワードの認証にしか慣れていない場合には、最初は少しわかりにくいかもしれません。最新の認証には進歩が必要であるため、将来一般的になるであろう用語を導入する必要がありますが、業界がこれらの新しい用語に落ち着くまで理解が難しいことを承知しています。この章の最後に参考のための用語集があります。要件の文字どおりの意味よりも、むしろ要件の目的を満たすために、多くの要件を言い換えました。例えば、NIST が「記憶された秘密 (memorized secret)」を使用する場合、ASVS では「パスワード」という用語を使用します。
ASVS V2 認証、V3 セッション管理、および範囲は狭いですが、V4 アクセス制御は選択された NIST 800-63b 管理策の準拠サブセットに適応し、一般的な脅威と一般的に悪用される認証の脆弱性に焦点を当てています。NIST 800-63 に完全に準拠する必要がある場合には、NIST 800-63 を確認してください。
適切な NIST AAL レベルの選択 †
アプリケーションセキュリティ検証標準は ASVS レベル 1 を NIST AAL1 要件に、レベル 2 を AAL2 に、レベル 3 を AAL3 にマップしようとしました。しかし、「必須」管理策としての ASVS レベル 1 のアプローチはアプリケーションや API を検証するための正しい AAL レベルとは限りません。例えば、アプリケーションがレベル 3 アプリケーションである場合や AAL3 とする規制要件がある場合には、セクション V2 および V3 セッション管理でレベル 3 を選択すべきです。NIST 準拠の認証アサーションレベル (AAL) の選択は NIST-63b ガイドラインに従って実行すべきです。NIST 800-63b Section 6.2 の Selecting AALに記載されています。
凡例 †
特に、最新の認証がアプリケーションのロードマップ上にある場合には、アプリケーションは常に現在のレベルの要件を超える可能性があります。以前は、ASVS には必須の MFA を要求していました。NIST は必須の MFA を要求しません。したがって、この章では ASVS が推奨するが管理策を要求しない場所を示すために、オプションの指定を使用しました。この標準では以下の凡例が使用されています。
記号 | 説明 |
| 必須ではない |
o | 推奨、但し必須ではない |
✓ | 必須 |
V2.1 パスワードセキュリティ要件 †
NIST 800-63 により「暗記された秘密」と呼ばれるパスワードには、パスワード、PIN、ロック解除パターン、正しい子猫や他の画像要素の選択、およびパスフレーズがあります。それらは一般に「あなたが知っているもの(something you know)」と、みなされ多くの場合に一要素オーセンティケータとして使用されます。インターネットで公開されている数十億の有効なユーザ名とパスワード、デフォルトパスワードや脆弱なパスワード、レインボーテーブル、最も一般的なパスワードの順序付き辞書など、一要素認証の継続使用には大きな課題があります。
アプリケーションはユーザに多要素認証への登録を強く推奨し、ユーザが FIDO や U2F トークンなどすでに所有しているトークンを再利用できるようにするか、多要素認証を提供する資格情報プロバイダへのリンクを許可する必要があります。
資格情報プロバイダ (CSP) はユーザにフェデレーション ID (federated identity) を提供します。ユーザは一般的な選択肢として Azure AD, Okta, Ping Identity, Google を使用するエンタープライズ ID や、Facebook, Twitter, Google, WeChat を使用するコンシューマ ID など、複数の CSP で複数の ID を持つことがよくあります。このリストはこれらの企業やサービスを支持するものではなく、多くのユーザが多くの ID をすでに持っているという現実を、開発者が検討することを推奨するものです。組織は CSP の ID プルーフィングの強度のリスクプロファイルに従って、既存のユーザ ID との統合を検討すべきです。例えば、政府機関がソーシャルメディア ID を機密システムのログインとして受け入れることはまずありません。偽の ID を作成、ID を破棄することが簡単なためです。一方、モバイルゲーム会社はアクティブなプレイヤベースを拡大するために、主要なソーシャルメディアプラットフォームと統合する必要があると考えるかもしれません。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.1.1 | ユーザが設定するパスワードは、最低12文字となっている。 (C6) | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.2 | 64文字以上のパスワードが使用できる。 (C6) | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.3 | パスワードにスペースを含めることができ、切り捨てが行われない。 任意で、連続した複数のスペースは1つにまとめてもよい。 (C6) | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.4 | パスワードにUnicode文字が使用できる。単一のUnicode符号点は文字と見なされるため、12文字の絵文字や64文字の漢字が有効に使用できる必要があります。 | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.5 | ユーザは自身のパスワードを変更できる。 | ✓ | ✓ | ✓ | 620 | 未検証のパスワード変更 | ユーザーに新しいパスワードを設定する場合、製品は元のパスワードに関する知識を必要としません。 | 5.1.1.2 |
2.1.6 | パスワード変更機能には、ユーザの現在のパスワードと新しいパスワードが必要とされる。 | ✓ | ✓ | ✓ | 620 | 未検証のパスワード変更 | ユーザーに新しいパスワードを設定する場合、製品は元のパスワードに関する知識を必要としません。 | 5.1.1.2 |
2.1.7 | アカウント登録、ログインおよびパスワード変更中に送信されるパスワードが、ローカル(システムのパスワードポリシーに一致する上位1,000または10,000個の最も一般的なパスワードなど)または外部 API を使用して、侵害されたパスワードと照合される。 API を使用する場合は、平文のパスワードが送信されたりパスワードの侵害状況を確認する際に使用されたりしないように、ゼロ知識証明またはその他の仕組みを使用する必要があります。 パスワードが侵害された場合、アプリケーションはユーザに新しい侵害されていないパスワードの設定を要求する必要があります。 (C6) | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.8 | ユーザがより強力なパスワードを設定できるように、パスワード強度メータが用意されている。 | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.9 | 使用可能な文字の種類を制限するパスワード規則がない。大文字、小文字、数字、特殊文字を要求する必要はない。 (C6) | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.10 | 定期的なクレデンシャル変更またはパスワード履歴に関する要件がない。 | ✓ | ✓ | ✓ | 263 | 有効期限の長いパスワードのエージング | パスワードのエージングをチェックせずに許可すると、パスワードの完全性が低下する可能性があります。 | 5.1.1.2 |
2.1.11 | パスワード入力に対して、ペースト、ブラウザのパスワードヘルパー、および外部パスワードマネージャが使用できる。 | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
2.1.12 | ユーザがマスクされたパスワード全体を一時的に表示するか、またはネイティブ機能としてこれを備えていないプラットフォームではパスワードの最後に入力した文字を一時的に表示するかを選択できる。 | ✓ | ✓ | ✓ | 521 | 弱いパスワードの要件 | この製品では、ユーザーが強力なパスワードを持つ必要がないため、攻撃者がユーザーアカウントを侵害することが容易になります。 | 5.1.1.2 |
V2.2 一般的なオーセンティケータの要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.2.1 | 耐自動化コントロールが流出したクレデンシャルテスト攻撃、ブルートフォース攻撃、およびアカウントロックアウト攻撃の軽減に効果的となっている。このようなコントロールには最も一般的な流出パスワードのブロック、ソフトロックアウト、レート制限、CAPTCHA、試行間の遅延増加、IP アドレスの制限、または場所、デバイスへの最初のログイン、アカウントロック解除の最近の試行などのリスクベースの制限があります。一つのアカウントで一時間あたり 100 回以上の試行失敗が可能ではない。 | ✓ | ✓ | ✓ | 307 | 過度な認証試行の不適切な制限 | このソフトウェアは、短時間に複数回の認証試行に失敗することを防ぐための十分な対策を実装していないため、ブルートフォース攻撃の影響を受けやすくなっています。 | 5.2.2 / 5.1.1.2 / 5.1.4.2 / 5.1.5.2 |
2.2.2 | 弱いオーセンティケータ (SMS や電子メールなど) の使用がよりセキュアな認証方式の代わりとしてではなく、二次検証とトランザクション承認に限定されている。より強い方式が弱い方式の前に提示されていること、ユーザがリスクを承知していること、またはアカウント侵害のリスクを制限するために適切な対策が講じられている。 | ✓ | ✓ | ✓ | 304 | 認証における重要なステップの欠落 | ソフトウェアは認証技術を実装しているが、技術を弱体化させるステップをスキップしている。 | 5.2.10 |
2.2.3 | クレデンシャルのリセット、電子メールやアドレスの変更、不明な場所や危険な場所からのログインなどの認証詳細の更新後に、セキュアな通知がユーザに送信される。SMS や電子メールではなく、プッシュ通知の使用が推奨されますが、プッシュ通知がない場合、通知に機密情報が開示されていない限り SMS や電子メールは受け入れられます。 | ✓ | ✓ | ✓ | 620 | 未検証のパスワード変更 | ユーザーに新しいパスワードを設定する場合、製品は元のパスワードに関する知識を必要としません。 | |
2.2.4 | 多要素認証、目的別暗号化デバイス (プッシュして認証する接続キーなど) 、またはより高い AAL レベルのクライアント側証明書の使用など、フィッシングに対するなりすまし耐性がある。 | | | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 5.2.5 |
2.2.5 | クレデンシャルプロバイダ (CSP) と認証を検証するアプリケーションが分離されている場合、2つのエンドポイント間で相互に認証された TLS が設定されている。 | | | ✓ | 319 | 機密情報のクリアテキスト送信 | ソフトウェアは、機密情報またはセキュリティ上重要なデータを、許可されていないアクターが盗聴できる通信チャネルでクリアテキストで送信します。 | 5.2.6 |
2.2.6 | OTPデバイス、暗号化オーセンティケータ、またはルックアップコードを強制的に使用して、リプレイ耐性をつける。 | | | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 5.2.8 |
2.2.7 | OTPトークンの入力や、FIDOハードウェアキーのボタンを押すなどのユーザ始動のアクションを要求することにより、認証の意思を検証する。 | | | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 5.2.9 |
オーセンティケータライフサイクルの要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.3.1 | システムが生成した初期パスワードまたはアクティベーションコードは、セキュアでランダムに生成されており、6文字以上であり、文字と数字を含むことができ、短期間で有効期限が切れる。これらの初期の秘密情報が長期間有効なパスワードになることを許可してはいけない。 | ✓ | ✓ | ✓ | 330 | 不十分なランダム値の使用 | このソフトウェアは、予測不可能な数値に依存するセキュリティコンテキストで、十分に乱数や値を使用しています。 | 5.1.1.2 / A.3 |
2.3.2 | U2F や FIDO トークンなど、サブスクライバ(Subscriber)が提供する認証デバイスの登録と使用がサポートされている。 | | ✓ | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 6.1.3 |
2.3.3 | 期限付きのオーセンティケータを更新するとき、十分な時間をとって更新指示が送信される。 | | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 6.1.4 |
V2.4 クレデンシャルの保管要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.4.1 | パスワードがオフライン攻撃に強い形式で保存されている。承認済みの一方向鍵生成またはパスワードハッシュ関数を使用して、パスワードをソルト化およびハッシュ化しなければなりません。 鍵生成およびパスワードハッシュ関数は、パスワードハッシュを生成するときに入力として、パスワード、ソルト、およびコストファクターを受け取ります。 (C6) | | ✓ | ✓ | 916 | 計算量が足りないパスワードハッシュの使用 | ソフトウェアはパスワードのハッシュを生成しますが、パスワードのクラッキング攻撃を実行不可能にしたり、高価にしたりするような十分なレベルの計算努力を提供しないスキームを使用しています。 | 5.1.1.2 |
2.4.2 | ソルトの長さが少なくとも32ビットであり、保存されているハッシュ間のソルト値の衝突を最小限に抑えるために任意に選択されている。クレデンシャルごとに、固有のソルト値とその結果のハッシュを保管しなければなりません。(C6) | | ✓ | ✓ | 916 | 計算量が足りないパスワードハッシュの使用 | ソフトウェアはパスワードのハッシュを生成しますが、パスワードのクラッキング攻撃を実行不可能にしたり、高価にしたりするような十分なレベルの計算努力を提供しないスキームを使用しています。 | 5.1.1.2 |
2.4.3 | PBKDF2が使用されている場合、反復回数は検証サーバの性能が許す限り大きくすべきであり、通常少なくとも100,000回イテレーションする。 (C6) | | ✓ | ✓ | 916 | 計算量が足りないパスワードハッシュの使用 | ソフトウェアはパスワードのハッシュを生成しますが、パスワードのクラッキング攻撃を実行不可能にしたり、高価にしたりするような十分なレベルの計算努力を提供しないスキームを使用しています。 | 5.1.1.2 |
2.4.4 | bcryptが使用されている場合、ワークファクターは検証サーバの性能が許す限り大きくする必要があり、通常少なくとも13とする。 (C6) | | ✓ | ✓ | 916 | 計算量が足りないパスワードハッシュの使用 | ソフトウェアはパスワードのハッシュを生成しますが、パスワードのクラッキング攻撃を実行不可能にしたり、高価にしたりするような十分なレベルの計算努力を提供しないスキームを使用しています。 | 5.1.1.2 |
2.4.5 | 秘密であり検証者のみが知っているソルト値を使用して、鍵生成関数の追加のイテレーションが実行される。承認された乱数ビット生成器 [SP 800-90Ar1] を使用してソルト値を生成し、少なくとも SP 800-131A の最新リビジョンで指定されている最小セキュリティ強度を提供します。秘密のソルト値はハッシュされたパスワードとは別に (例えば、ハードウェアセキュリティモジュールのような専用デバイスに) 保存すべきです。 | | ✓ | ✓ | 916 | 計算量が足りないパスワードハッシュの使用 | ソフトウェアはパスワードのハッシュを生成しますが、パスワードのクラッキング攻撃を実行不可能にしたり、高価にしたりするような十分なレベルの計算努力を提供しないスキームを使用しています。 | 5.1.1.2 |
V2.5 クレデンシャルリカバリ要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.5.1 | システムによって生成された初期アクティベーションまたはリカバリ用の秘密情報が平文でユーザに送信されていない。 (C6) | ✓ | ✓ | ✓ | 640 | パスワードを忘れた時の弱いパスワード復旧の仕組み | 同ソフトには、元のパスワードを知らなくてもパスワードを復旧・変更できる仕組みが含まれているが、仕組みが弱い。 | 5.1.1.2 |
2.5.2 | パスワードのヒントや知識ベースの認証(いわゆる「秘密の質問」)が存在しない。 | ✓ | ✓ | ✓ | 640 | パスワードを忘れた時の弱いパスワード復旧の仕組み | 同ソフトには、元のパスワードを知らなくてもパスワードを復旧・変更できる仕組みが含まれているが、仕組みが弱い。 | 5.1.1.2 |
2.5.3 | パスワードクレデンシャルのリカバリによって現在のパスワードが明らかにならない。 (C6) | ✓ | ✓ | ✓ | 640 | パスワードを忘れた時の弱いパスワード復旧の仕組み | 同ソフトには、元のパスワードを知らなくてもパスワードを復旧・変更できる仕組みが含まれているが、仕組みが弱い。 | 5.1.1.2 |
2.5.4 | 共有アカウントまたはデフォルトアカウントが存在しない(例えば "root", "admin", "sa")。 | ✓ | ✓ | ✓ | 16 | カテゴリ:構成 | このカテゴリの弱点は、通常、ソフトウェアの構成時に発生します。 | 5.1.1.2 / A.3 |
2.5.5 | 認証要素が変更または置き換えられた場合、ユーザにこのイベントが通知される。 | ✓ | ✓ | ✓ | 304 | 認証における重要なステップの欠落 | ソフトウェアは認証技術を実装しているが、技術を弱体化させるステップをスキップしている。 | 6.1.2.3 |
2.5.6 | パスワードを忘れた場合や他のリカバリパスは、 TOTPまたはその他のソフトトークン、モバイルパス、または別のオフラインリカバリ機構などのセキュアなリカバリ機構を使用する。 (C6) | ✓ | ✓ | ✓ | 640 | パスワードを忘れた時の弱いパスワード復旧の仕組み | 同ソフトには、元のパスワードを知らなくてもパスワードを復旧・変更できる仕組みが含まれているが、仕組みが弱い。 | 5.1.1.2 |
2.5.7 | OTP または多要素認証要素が失われた場合、登録時と同じレベルで同一性証明の証拠が実行される。 | | ✓ | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 6.1.2.3 |
V2.6 ルックアップシークレット検証者(Verifier)の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.6.1 | ルックアップシークレットは一度だけしか使用されない。 | | ✓ | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 5.1.2.2 |
2.6.2 | ルックアップシークレットが十分なランダム性(112ビットのエントロピー)を持っていること、または、112ビットのエントロピー以下の場合に、一意でランダムな32ビットでソルトされ、承認された一方向ハッシュでハッシュ化されている。 | | ✓ | ✓ | 330 | 不十分なランダム値の使用 | このソフトウェアは、予測不可能な数値に依存するセキュリティコンテキストで、十分に乱数や値を使用しています。 | 5.1.2.2 |
2.6.3 | ルックアップシークレットは予測可能な値などのオフライン攻撃に対して耐性がある。 | | ✓ | ✓ | 310 | カテゴリ:暗号問題 | このカテゴリの弱点は、データの機密性と整合性の設計と実装に関連しています。多くの場合、これらはエンコード技術、暗号化ライブラリ、およびハッシュアルゴリズムの使用を扱います。このカテゴリの弱点は、対処されない場合、品質データの低下につながる可能性があります。 | 5.1.2.2 |
V2.7 経路外 (Out of Band) 検証者(Verifier) の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.7.1 | SMS や PSTN などの平文経路外(NISTで制限されている)オーセンティケータがデフォルトで提供されておらず、プッシュ通知などの強力な代替が最初に提供されている。 | ✓ | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.3.2 |
2.7.2 | 経路外検証者が10分後に、帯域外認証リクエスト、コード、またはトークンが期限切れにさせる。 | ✓ | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.3.2 |
2.7.3 | 経路外検証者の認証リクエストやコード、またはトークンが1回しか使用できず、元の認証リクエストに対してのみ使用可能となっている。 | ✓ | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.3.2 |
2.7.4 | 経路外オーセンティケータおよび検証者はセキュアで独立したチャネルを介して通信する。 | ✓ | ✓ | ✓ | 523 | 証明書の保護されていない転送 | ログインページでは、クライアントからサーバへの転送中にユーザ名とパスワードを保護するための適切な手段が使用されていません。 | 5.1.3.2 |
2.7.5 | 経路外検証者がハッシュ化されたバージョンのオーセンティケーションコードのみを保持している。 | | ✓ | ✓ | 256 | 保護されていないクレデンシャルの保存 | パスワードを平文で保存すると、システムが危険にさらされる可能性があります。 | 5.1.3.2 |
2.7.6 | 初期オーセンティケーションコードは少なくとも20ビットのエントロピーを含む (通常、6デジタル乱数で十分です) セキュアな乱数生成器により生成されている。 | | ✓ | ✓ | 310 | カテゴリ:暗号問題 | このカテゴリの弱点は、データの機密性と整合性の設計と実装に関連しています。多くの場合、これらはエンコード技術、暗号化ライブラリ、およびハッシュアルゴリズムの使用を扱います。このカテゴリの弱点は、対処されない場合、品質データの低下につながる可能性があります。 | 5.1.3.2 |
V2.8 単一または多要素のワンタイム検証者の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.8.1 | 時間ベースの OTP は期限切れまでの有効期間が定義されている。 | ✓ | ✓ | ✓ | 613 | 不十分なセッションの有効期限 | WASCによると、「不十分なセッションの有効期限とは、Webサイトが攻撃者に古いセッション認証情報やセッションIDを再利用して認証を行うことを許すことである」とされている。 | 5.1.4.2 / 5.1.5.2 |
2.8.2 | 送信された OTP を検証するために使用される対称鍵は、ハードウェアセキュリティモジュールまたはセキュアなオペレーティングシステムベースのキーストレージなどを使用して、高度に保護されている。 | | ✓ | ✓ | 320 | カテゴリ:鍵管理エラー | このカテゴリの弱点は、暗号化キーの管理のエラーに関連しています。 | 5.1.4.2 / 5.1.5.2 |
2.8.3 | 承認済みの暗号化アルゴリズムが生成、シード、検証に使用されている。 | | ✓ | ✓ | 326 | 不十分な暗号化強度 | ソフトウェアは、理論的には健全な暗号化スキームを使用して機密データを保存または送信していますが、必要な保護レベルには十分な強度を持っていません。 | 5.1.4.2 / 5.1.5.2 |
2.8.4 | 時間ベースのOTPが有効期間内に1回しか使用できない。 | | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.4.2 / 5.1.5.2 |
2.8.5 | 時間ベースの多要素OTPトークンが有効期間中に再利用された場合、それがログに記録され、セキュアな通知がデバイスの所有者に送信されるとともにリジェクトされる。 | | ✓ | ✓ | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.5.2 |
2.8.6 | 盗難やその他の損失が発生した場合は、物理的な単一要素の OTP ジェネレータを無効にすることができる。場所に関係なく、ログインしたセッション全体で失効がすぐに反映されるようにします。 | | ✓ | ✓ | 613 | 不十分なセッションの有効期限 | WASCによると、「不十分なセッションの有効期限とは、Webサイトが攻撃者に古いセッション認証情報やセッションIDを再利用して認証を行うことを許すことである」とされている。 | 5.2.1 |
2.8.7 | 生体認証システムが、自分が持っているものと自分が知っているものの、両方と組み合わせて二次的要素としてのみ使用されるよう制限されている。 | | o | ✓ | 308 | シングルファクタ認証の使用 | シングルファクタ認証を使用すると、デュアルファクタ認証の利点と比較して、不必要に危険にさらされる危険性があります。 | 5.2.3 |
V2.9 暗号化ソフトウェアおよびデバイス検証者の要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.9.1 | 検証に使用される暗号化キーは、TPM や HSM またはこのセキュアなストレージを使用できる OS サービスを使用するなど、セキュアに保存され、漏えいから保護されている。 | | ✓ | ✓ | 320 | カテゴリ:鍵管理エラー | このカテゴリの弱点は、暗号化キーの管理のエラーに関連しています。 | 5.1.7.2 |
2.9.2 | チャレンジノンスは少なくとも64ビットの長さがあり、統計的に一意か、暗号化デバイスの有効期間を通じて一意となっている。 | | ✓ | ✓ | 330 | 不十分なランダム値の使用 | このソフトウェアは、予測不可能な数値に依存するセキュリティコンテキストで、十分に乱数や値を使用しています。 | 5.1.7.2 |
2.9.3 | 承認された暗号化アルゴリズムが生成、シード、および検証に使用されている。 | | ✓ | ✓ | 327 | 壊れた暗号アルゴリズムやリスクの高い暗号アルゴリズムの使用 | 壊れた暗号アルゴリズムやリスクの高い暗号アルゴリズムを使用することは、機密情報の漏洩につながる不必要なリスクである。 | 5.1.7.2 |
V2.10 サービス認証要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 | NIST |
2.10.1 | 統合シークレットが、APIキーや共有特権アカウントなどの不変のパスワードに依存していない。 | | OS assisted | HSM | 287 | 不適切な認証 | アクターが所定のアイデンティティを持っていると主張した場合、ソフトウェアはその主張が正しいことを証明しないか、または不十分に証明します。 | 5.1.1.1 |
2.10.2 | パスワードが必要な場合は、クレデンシャルがデフォルトアカウントではない。 | | OS assisted | HSM | 255 | カテゴリ:資格情報管理エラー | このカテゴリの弱点は、資格情報の管理に関連しています。 | 5.1.1.1 |
2.10.3 | ローカルシステムアクセスを含むオフラインリカバリ攻撃を防ぐために、パスワードは十分保護された状態で保存されている。 | | OS assisted | HSM | 522 | 不十分に保護されたクレデンシャル | 製品は認証クレデンシャルを送信または保存するが、不正な傍受および/または検索の影響を受けやすい安全でない方法を使用している。 | 5.1.1.1 |
2.10.4 | パスワード、データベースおよびサードパーティシステムとの統合、シードおよび内部シークレット、および APIキー がセキュアに管理され、ソースコードに含まれていないこと、またはソースコードリポジトリに保存されていない。このようなストレージはオフライン攻撃に耐える必要があります。パスワードストレージにはセキュアなソフトウェアキーストア (L1) 、ハードウェアトラステッドプラットフォームモジュール (TPM) 、またはハードウェアセキュリティモジュール (L3) の使用を推奨します。 | | OS assisted | HSM | 798 | 過剰なデータのロギング | ソフトウェアはあまりにも多くの情報をログに記録するため、ログファイルの処理が困難になり、攻撃後の復旧作業やフォレンジック分析の妨げになる可能性があります。 | |
追加の米国政府機関要件 †
米国政府機関には NIST 800-63 に関する必須要件があります。アプリケーションセキュリティ検証標準は常に、アプリのほぼ100%に適用される管理策の約80%であり、高度な管理策や適用が制限される管理策の残りの20%ではありません。そのため、ASVS は特に IAL1/2 および AAL1/2 分類では NIST 800-63 の厳密なサブセットですが、特に IAL3/AAL3 分類に関しては十分に包括的ではありません。
米国政府機関には NIST 800-63 全体をレビューし実装することを強くお勧めします。
用語集 †
用語 | 意味 |
CSP | クレデンシャルサービスプロバイダ (Credential Service Provider) は ID プロバイダ (Identity Provider) とも呼ばれます。 |
オーセンティケータ(Authenticator) | パスワード、トークン、MFA、フェデレーションアサーションなどを認証するコード。 |
検証者(Verifier) | 「認証プロトコルを使用して1つまたは2つのオーセンティケータの認証要求者の所有と制御を検証することにより、認証要求者の身元を検証するエンティティ。これを行うために、検証者はオーセンティケータをサブスクライバ(Subscriber)のオーセンティケータにリンクし、そのステータスを確認するクレデンシャルをバリデートする必要がある場合があります。」 |
OTP | ワンタイムパスワード (One-time password) |
SFA | 単一要素オーセンティケータ (Single-factor authenticators) 。知っているもの (記憶された秘密、パスワード、パスフレーズ、PIN) 、持っている特徴 (生体情報、指紋、顔スキャン) 、または持っているもの (OTP トークン、スマートカードなどの暗号化デバイス) など。 |
MFA | 多要素オーセンティケータ (Multi-factor authenticator)。2つ以上の単一要素のものを含む。 |
参考情報 †
詳細については、以下も参照してください。