mcpField
S
security-guidance

security-guidance

github.com/owaspセキュリティ208430 回インストール2 週間前に更新
リポジトリ

security-guidance について

セキュリティに関わる操作の計画やコード作成に使う、エージェント向けのガイダンススキルです。タスクに応じて ASVS の参照項目を特定し、適用を求め、指針が不足または不明確な場合はエスカレーションします。

主な機能

  1. 01ASVS の条件別インデックス
  2. 02該当する参照ファイルの確認
  3. 03Level 1 要件の適用
  4. 04要件へのインライン引用
  5. 05不足や矛盾のエスカレーション

活用シーン

  1. 01信頼できない入力を扱う機能の計画
  2. 02セキュリティ関連コードの作成
  3. 03実装前の該当 ASVS 要件の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/owasp/secure-agent-playbook --skill security-guidance

インストール後、Claude Code で/security-guidanceを入力して読み込まれたか確認します。

詳細

セキュリティガイダンス

基本原則

セキュリティは最優先要件です。セキュリティ上の重要な操作に関わる計画を完了したり、コードを生成したりする前に、以下の ASVS 参照インデックスを確認し、該当するすべてのガイダンスを適用してください。

生成するすべてのコードと計画は、選択したガイダンスに準拠していることを明確に示し、安全なデフォルト設定と明示的なインライン引用を含める必要があります。

ワークフロー

  1. 該当するセクションを特定する — 現在のタスクと、以下のインデックスにある When to use: の条件を照合します。タスクが複数のセクションに該当する場合があります。その場合は、該当するすべてのセクションを適用してください。
  2. 参照ファイルを読む — 該当する各セクションについて、インデックス項目の末尾に記載された参照ファイルをすべて読み、検証要件を確認します。
  3. ガイダンスを適用する — 要件を実装します。選択肢がある場合は、最も安全な方法をデフォルトとします。最低限、レベル 1 の要件をすべて適用してください。関連するものの未実装であるレベル 2 またはレベル 3 の要件があれば、その旨を記載します。
  4. 適用した要件をインラインで引用する — コードコメントまたは計画の注記で、満たした各要件を参照します:// ASVS 6.2.4: password checked against top-3000 list

エスカレーション

セキュリティ上重要な操作を含むタスクに該当するセクションがインデックスにない場合、またはガイダンスに矛盾がある、あるいは不明確な場合は、作業を停止し、先に不足を報告してください。推測したり、ガイダンスを言い換えたりしないでください。代わりにエスカレーションしてください。

以下のインデックスが空の場合は、参照インデックスの読み込みに失敗したことを報告し、タスクの説明から関連する可能性のある ASVS の章を列挙してください。

参照インデックス

V1.1 エンコーディングおよびサニタイゼーションのアーキテクチャ

エンコーディング、エスケープ、デコード処理の順序と配置に関するアーキテクチャ要件です。

使用する場面:

  • 信頼できない入力を扱うデータ処理パイプラインを設計する場合
  • リクエスト/レスポンスのライフサイクルのどこでデータをエンコードまたはエスケープするかを決める場合
  • 後で異なる出力コンテキストにレンダリングされるデータを保存する場合

詳細なガイダンスについては、data/asvs/V1.1.md を参照してください。

V1.2 インジェクションの防止

インタープリター(SQL、HTML、JS、OS、LDAP など)へのインジェクションを防ぐための出力エンコーディングおよびエスケープ要件です。

使用する場面:

  • データベースクエリ(SQL、NoSQL、HQL、Cypher、XPath、LDAP)を構築する場合
  • 動的データを使って OS コマンドまたはシェルスクリプトを構築する場合
  • ユーザー提供の値を含む URL またはリダイレクトを構築する場合
  • HTML、CSS、または JavaScript 内にユーザー入力をレンダリングする場合
  • LaTeX 入力を処理する場合
  • ユーザー提供のパターンを含む正規表現を評価する場合
  • ユーザーデータを含む CSV、XLS、または表計算ファイルを生成する場合

詳細なガイダンスについては、data/asvs/V1.2.md を参照してください。

V1.3 サニタイゼーション

エンコーディングが適用できない場合に、信頼できない HTML および動的コンテンツをサニタイズするための要件です。

使用する場面:

  • ユーザーからリッチテキストまたは HTML 入力を受け付ける場合(例:WYSIWYG エディター)
  • ユーザー提供のコンテンツを使って eval() または動的なコード実行を行う場合
  • エンコーディングだけでは不十分なユーザー投稿マークアップをレンダリングする場合

詳細なガイダンスについては、data/asvs/V1.3.md を参照してください。

V1.4 メモリ、文字列、およびアンマネージコード

アンマネージコードまたは低レベルコードでの安全なメモリ処理と文字列操作に関する要件です。

使用する場面:

  • アンマネージコード(C、C++、アセンブリ)を記述または統合する場合
  • 安全でないメモリ操作、ポインター演算、または生バッファーを使用する場合
  • マネージ言語からネイティブライブラリまたは FFI を呼び出す場合
  • 低レベルコードまたはパフォーマンスが重要なコードで文字列操作を扱う場合

詳細なガイダンスについては、data/asvs/V1.4.md を参照してください。

V1.5 安全なデシリアライズ

信頼できないソースまたは外部ソースのデータを安全にデシリアライズするための要件です。

使用する場面:

  • 信頼できないソースからオブジェクトまたはデータ構造をデシリアライズする場合
  • ネットワーク、ファイルアップロード、または API ペイロードを介してシリアライズ済みデータを受け付ける場合
  • Java serialization、Python pickle、PHP unserialize、または同様の仕組みを使用する場合
  • バイナリ形式またはテキスト形式のシリアライズフォーマット(XML、JSON、YAML、MessagePack)を処理する場合

詳細なガイダンスについては、data/asvs/V1.5.md を参照してください。

V2.1 検証とビジネスロジックのドキュメント

想定される入力とビジネスロジックのルールを文書化するための要件です。

使用する場面:

  • アプリケーションが受け付ける入力と、想定される形式を文書化するとき
  • 機能のビジネスルールとワークフローの制約を定義するとき

詳しいガイダンスについては、data/asvs/V2.1.md を参照してください。

V2.2 入力検証

アプリケーションの境界で入力データを検証するための要件です。

使用する場面:

  • アプリケーションの境界でユーザーが提供した入力を処理するとき
  • 入力が想定される型、形式、長さ、または値の範囲に一致することを検証するとき
  • 外部システムや API から受信したデータを確認するとき

詳しいガイダンスについては、data/asvs/V2.2.md を参照してください。

V2.3 ビジネスロジックのセキュリティ

ビジネスワークフローが改ざんされたり、手順を飛ばされたり、競合状態が発生したりしないよう保護するための要件です。

使用する場面:

  • 複数ステップのワークフローやトランザクションの連続処理を実装するとき
  • 操作間の順序やタイミングに関する制約を適用するとき
  • 金融取引、在庫更新、またはステートマシンを扱うとき
  • ユーザーが手順を飛ばしたり、再実行したりできないようにする機能を実装するとき

詳しいガイダンスについては、data/asvs/V2.3.md を参照してください。

V2.4 自動化への対策

自動化による不正利用、スクレイピング、過剰なリクエストから保護するための要件です。

使用する場面:

  • エンドポイントや操作にレート制限を追加するとき
  • 自動化による不正利用やクレデンシャルスタッフィングからフォームや API を保護するとき
  • 公開エンドポイントに CAPTCHA やボット検出を実装するとき
  • ユーザーまたは IP ごとに操作の実行回数を制限するとき

詳しいガイダンスについては、data/asvs/V2.4.md を参照してください。

V3.1 Web フロントエンドのセキュリティドキュメント

フロントエンドのセキュリティ上の判断とブラウザーのセキュリティ設定を文書化するための要件です。

使用する場面:

  • Web フロントエンドアプリケーションのセキュリティ上の判断を文書化するとき
  • 使用するコンテンツセキュリティポリシーとブラウザー保護を定義するとき

詳しいガイダンスについては、data/asvs/V3.1.md を参照してください。

V3.2 意図しないコンテンツ解釈

ブラウザーがレスポンスのコンテンツタイプを誤って解釈しないようにするための要件です。

使用する場面:

  • ユーザーがアップロードしたファイルや、アプリケーションのコンテンツを配信するとき
  • HTTP レスポンスに Content-Type ヘッダーを設定するとき
  • ユーザーが制御できるコンテンツを含む HTML ページをレンダリングするとき
  • ブラウザーによるレスポンスタイプの MIME スニッフィングを防ぐとき

詳しいガイダンスについては、data/asvs/V3.2.md を参照してください。

V3.3 Cookie の設定

Cookie 属性を安全に設定するための要件です。

使用する場面:

  • HTTP レスポンスで Cookie を設定するとき(セッション、設定、またはトラッキング用 Cookie)
  • Cookie 属性(HttpOnly、Secure、SameSite、domain、path)を設定するとき

詳しいガイダンスについては、data/asvs/V3.3.md を参照してください。

V3.4 ブラウザーのセキュリティ機構ヘッダー

ブラウザーにセキュリティポリシーの適用を指示する HTTP セキュリティヘッダーの要件です。

使用する場面:

  • Web アプリケーションのレスポンスに HTTP セキュリティヘッダーを設定するとき
  • Content Security Policy(CSP)を設定するとき
  • HSTS、X-Frame-Options、Referrer-Policy、または Permissions-Policy ヘッダーを設定するとき

詳しいガイダンスについては、data/asvs/V3.4.md を参照してください。

V3.5 ブラウザーのオリジン分離

オリジンの境界を適用し、ブラウザーでのクロスオリジン攻撃を防ぐための要件です。

使用する場面:

  • Cross-Origin Resource Sharing(CORS)ポリシーを設定するとき
  • 複数のオリジンやサブドメイン間で連携するアプリケーションを構築するとき
  • クロスサイトリクエストフォージェリ(CSRF)を防ぐとき
  • postMessage やフレーム間通信を使用するとき

詳しいガイダンスについては、data/asvs/V3.5.md を参照してください。

V3.6 外部リソースの整合性

外部から読み込まれるリソースの整合性を検証するための要件です。

使用する場面:

  • 外部 CDN からサードパーティのスクリプト、スタイルシート、またはフォントを読み込むとき
  • 外部アセットにサブリソース整合性(SRI)を使用するとき
  • HTML ページに外部リソースを埋め込むとき

詳しいガイダンスについては、data/asvs/V3.6.md を参照してください。

V3.7 その他のブラウザーセキュリティに関する考慮事項

他の V3 セクションでは扱われていない、その他のブラウザーセキュリティ要件です。

使用する場面:

  • 複雑なクライアント側ロジックを含むブラウザーベースのアプリケーションを構築する場合
  • ブラウザーのストレージ(localStorage、sessionStorage、IndexedDB)で機密データを扱う場合
  • サービスワーカーやブラウザーのキャッシュ機構を使用する場合

詳しいガイダンスについては、data/asvs/V3.7.md を参照してください。

V4.1 汎用 Web サービスセキュリティ

すべての HTTP ベースの Web サービスに適用される一般的なセキュリティ要件です。

使用する場面:

  • HTTP ベースの API または Web サービスを構築または利用する場合
  • REST エンドポイントを実装する場合
  • Web サービスのリクエスト/レスポンスのライフサイクルを設計する場合

詳しいガイダンスについては、data/asvs/V4.1.md を参照してください。

V4.2 HTTP メッセージ構造の検証

HTTP メッセージの構造とフィールドを検証するための要件です。

使用する場面:

  • API で HTTP リクエストヘッダー、クエリパラメーター、または本文の内容を解析する場合
  • Content-Type、Accept、またはその他の HTTP ヘッダーフィールドを検証する場合
  • Web サービスで HTTP リクエストのルーティングやミドルウェアを扱う場合

詳しいガイダンスについては、data/asvs/V4.2.md を参照してください。

V4.3 GraphQL

GraphQL API に固有のセキュリティ要件です。

使用する場面:

  • GraphQL API またはスキーマを実装する場合
  • GraphQL のクエリ、ミューテーション、またはサブスクリプションを扱う場合
  • GraphQL サーバーまたはゲートウェイを設定する場合

詳しいガイダンスについては、data/asvs/V4.3.md を参照してください。

V4.4 WebSocket

WebSocket 接続とメッセージ処理に関するセキュリティ要件です。

使用する場面:

  • リアルタイム通信のために WebSocket 接続を実装する場合
  • WebSocket サーバーまたはクライアントを構築する場合
  • WebSocket のアップグレードリクエストとメッセージのルーティングを扱う場合

詳しいガイダンスについては、data/asvs/V4.4.md を参照してください。

V5.1 ファイル処理に関するドキュメント

ファイル処理の要件とセキュリティ上の判断を文書化するための要件です。

使用する場面:

  • ファイルのアップロードまたはダウンロード機能を文書化する場合
  • 機能で受け入れるファイルの種類、サイズ、および処理方法を定義する場合

詳しいガイダンスについては、data/asvs/V5.1.md を参照してください。

V5.2 ファイルのアップロードとコンテンツ

ユーザーがアップロードしたファイルを安全に受け入れ、検証するための要件です。

使用する場面:

  • ファイルアップロード機能を実装する場合
  • HTTP、フォーム送信、または API を通じてユーザーからファイルを受け入れる場合
  • 処理前にファイルの種類、サイズ、または内容を検証する場合
  • 展開する ZIP ファイルやアーカイブのアップロードを扱う場合

詳しいガイダンスについては、data/asvs/V5.2.md を参照してください。

V5.3 ファイルストレージ

ファイルを安全に保存し、パストラバーサルやサーバー側での実行を防ぐための要件です。

使用する場面:

  • アップロードまたは生成されたファイルをディスクやオブジェクトストレージに保存する場合
  • 保存するファイルのパスを構築する場合
  • 保存したファイルを HTTP 経由で配信する場合
  • ユーザーが指定したファイルパスを扱う場合

詳しいガイダンスについては、data/asvs/V5.3.md を参照してください。

V5.4 ファイルのダウンロード

ユーザーがダウンロードできるようにファイルを安全に配信するための要件です。

使用する場面:

  • HTTP レスポンスでダウンロード用ファイルを配信する場合
  • ユーザーが保存済みのファイルをダウンロードできるようにする場合
  • ファイルのダウンロードに Content-Disposition または Content-Type を設定する場合

詳しいガイダンスについては、data/asvs/V5.4.md を参照してください。

V6.1 認証に関するドキュメント

認証に関する判断と仕組みを文書化するための要件です。

使用する場面:

  • アプリケーションの認証の仕組みを文書化する場合
  • 対応する認証方式を定義する場合

詳しいガイダンスについては、data/asvs/V6.1.md を参照してください。

V6.2 パスワードセキュリティ

保存、ポリシー、漏えい検知など、ユーザーパスワードを安全に扱うための要件です。

使用する場面:

  • パスワードベースのログインを実装する場合
  • ユーザーパスワードを保存または検証する場合
  • パスワードの作成、リセット、または変更のフローを実装する場合
  • パスワードポリシーを適用する、または漏えいしたパスワードのリストと照合する場合

詳しいガイダンスについては、data/asvs/V6.2.md を参照してください。

V6.3 一般的な認証セキュリティ

すべての認証方式に適用される一般的なセキュリティ要件です。

次の場合に使用します。

  • あらゆる認証方式(ログイン、API キー、証明書)を実装する場合
  • ログインフロー、認証エンドポイント、または認証情報の検証を構築する場合
  • ブルートフォース攻撃、列挙攻撃、またはタイミング攻撃から認証を保護する場合

詳細なガイダンスについては、data/asvs/V6.3.md を参照してください。

V6.4 認証要素のライフサイクルと復旧

認証要素の登録、復旧、取り消しを管理するための要件です。

次の場合に使用します。

  • アカウント復旧またはパスワードリセットのフローを実装する場合
  • 認証要素の登録または削除を管理する場合
  • パスワードを忘れた場合や、アカウントがロックされた場合に対応する場合

詳細なガイダンスについては、data/asvs/V6.4.md を参照してください。

V6.5 多要素認証の一般要件

多要素認証を実装するための一般的な要件です。

次の場合に使用します。

  • ログインフローに多要素認証(MFA)を追加する場合
  • TOTP、ハードウェアキー、またはその他の第 2 要素を実装する場合
  • 特権操作や機密性の高い操作に MFA を適用する場合

詳細なガイダンスについては、data/asvs/V6.5.md を参照してください。

V6.6 アウトオブバンド認証方式

別個のアウトオブバンドチャネルを使用する認証方式の要件です。

次の場合に使用します。

  • SMS、メール、またはプッシュ通知を利用した認証を実装する場合
  • ログインまたは本人確認にアウトオブバンドチャネル(電話、メールリンク)を使用する場合

詳細なガイダンスについては、data/asvs/V6.6.md を参照してください。

V6.7 暗号認証方式

WebAuthn、パスキー、クライアント証明書などの暗号認証方式に関する要件です。

次の場合に使用します。

  • 証明書ベースの認証を実装する場合
  • ハードウェアセキュリティキー(FIDO2、WebAuthn、パスキー)に対応する場合
  • 認証に暗号学的な所持証明を使用する場合

詳細なガイダンスについては、data/asvs/V6.7.md を参照してください。

V6.8 ID プロバイダーを利用した認証

フェデレーションプロトコルを使用して、外部 ID プロバイダー経由でユーザーを認証するための要件です。

次の場合に使用します。

  • 認証のために外部 ID プロバイダー(IdP)と連携する場合
  • 「Google/Apple/GitHub でサインイン」などのソーシャルログインを実装する場合
  • SAML、OIDC、または同様のプロトコルを介して認証をフェデレーションする場合

詳細なガイダンスについては、data/asvs/V6.8.md を参照してください。

V7.1 セッション管理のドキュメント

セッション管理に関する決定事項を文書化するための要件です。

次の場合に使用します。

  • アプリケーションのセッション管理設計を文書化する場合
  • セッショントークンの種類と保存方法を定義する場合

詳細なガイダンスについては、data/asvs/V7.1.md を参照してください。

V7.2 セッション管理の基本的なセキュリティ

安全なセッショントークンを作成して発行するための基本要件です。

次の場合に使用します。

  • 認証成功後にセッショントークンまたは Cookie を発行する場合
  • セッション識別子を生成する場合
  • ログイン後にセッションをユーザーに紐付ける場合

詳細なガイダンスについては、data/asvs/V7.2.md を参照してください。

V7.3 セッションタイムアウト

セッション期間を制限し、アイドルタイムアウトまたは絶対タイムアウトを実装するための要件です。

次の場合に使用します。

  • セッションの有効期限またはアイドルタイムアウトを実装する場合
  • 絶対セッション期間またはスライディングセッション期間を設定する場合
  • セッションの有効期間を管理する場合

詳細なガイダンスについては、data/asvs/V7.3.md を参照してください。

V7.4 セッションの終了

ログアウト時または認証情報の変更時にセッションを安全に終了するための要件です。

次の場合に使用します。

  • ログアウト機能を実装する場合
  • ログアウト時にサーバー側でセッションを無効化する場合
  • ユーザーが認証情報を変更した際に、すべてのセッションを終了する場合

詳細なガイダンスについては、data/asvs/V7.4.md を参照してください。

V7.5 セッションの不正利用に対する防御

セッションの窃取、固定化、ハイジャックを検出し、防止するための要件です。

次の場合に使用します。

  • セッション固定化、ハイジャック、またはリプレイ攻撃からセッションを保護する場合
  • セッションをデバイスまたは IP に紐付ける場合
  • 複数の場所からの同時セッションを検出する場合

詳細なガイダンスについては、data/asvs/V7.5.md を参照してください。

V7.6 フェデレーション再認証

フェデレーション ID および SSO シナリオにおけるセッション管理の要件です。

利用する場面:

  • フェデレーション SSO 環境でセッションを管理する
  • ID プロバイダーからの再認証リクエストを処理する
  • フェデレーションサービス間でシングルログアウト(SLO)を実装する

詳細なガイダンスについては、data/asvs/V7.6.md を参照してください。

V8.1 認可のドキュメント化

認可ルールと判断要因を文書化するための要件です。

利用する場面:

  • アクセス制御ルールと権限モデルを文書化する
  • リソースへのアクセスを左右するロールや属性を定義する

詳細なガイダンスについては、data/asvs/V8.1.md を参照してください。

V8.2 一般的な認可設計

機能レベル、データレベル、フィールドレベルでアクセス制御を適用するための要件です。

利用する場面:

  • 認証の実装を変更する際に重要です
  • どのユーザーがどの機能やエンドポイントを呼び出せるかを制御する
  • ユーザー ID に基づいて特定のデータレコードへのアクセスを制限する
  • オブジェクトレベルまたはフィールドレベルのアクセス制御を実装する
  • 安全でない直接オブジェクト参照(IDOR)を防止する

詳細なガイダンスについては、data/asvs/V8.2.md を参照してください。

V8.3 操作レベルの認可

適切なサービス階層で認可を適用し、権限変更を速やかに反映するための要件です。

利用する場面:

  • クライアント側だけでなく、サーバー側のロジックで認可を適用する
  • ロールが更新された際に、権限の変更を即時に適用する
  • マルチサービスまたはマイクロサービスアーキテクチャで認可を設計する

詳細なガイダンスについては、data/asvs/V8.3.md を参照してください。

V8.4 その他の認可に関する考慮事項

マルチテナントシステムおよび管理者インターフェースに関する追加の認可要件です。

利用する場面:

  • テナント分離を備えたマルチテナントアプリケーションを構築する
  • 管理者用または特権ユーザー用のインターフェースを実装する
  • 時間、場所、デバイスなどのコンテキストに応じたアクセス制御を認可に適用する

詳細なガイダンスについては、data/asvs/V8.4.md を参照してください。

V9.1 トークンの出所と完全性

自己完結型トークンの出所、署名、完全性を検証するための要件です。

利用する場面:

  • クライアントまたはサービスから受け取った JWT やその他の自己完結型トークンを検証する
  • トークンのクレームを信頼する前に、署名または完全性を検証する
  • トークンで使用できる署名アルゴリズムを設定する

詳細なガイダンスについては、data/asvs/V9.1.md を参照してください。

V9.2 トークンの内容

自己完結型トークンの内容、クレーム、有効期間に関する要件です。

利用する場面:

  • JWT や類似のトークン内に格納するクレームやペイロードを定義する
  • トークンに有効期限、対象者、発行者、その他の標準的なクレームを設定する
  • 機密データがトークンのペイロードに格納されないようにする

詳細なガイダンスについては、data/asvs/V9.2.md を参照してください。

V10.1 OAuth と OIDC の一般的なセキュリティ

すべての OAuth および OIDC 実装に適用される一般的なセキュリティ要件です。

利用する場面:

  • OAuth 2.0 または OpenID Connect のフローを実装する
  • 役割を問わず、OAuth または OIDC を使用するアプリケーションを設計する

詳細なガイダンスについては、data/asvs/V10.1.md を参照してください。

V10.2 OAuth クライアント

OAuth クライアントとして動作するアプリケーションのセキュリティ要件です。

利用する場面:

  • 認可サーバーからアクセストークンを要求するアプリケーションを構築する
  • クライアントとして認可コードフローやその他の OAuth グラントタイプを実装する
  • OAuth クライアントで PKCE を使用する

詳細なガイダンスについては、data/asvs/V10.2.md を参照してください。

V10.3 OAuth リソースサーバー

OAuth リソースサーバーとして動作する API のセキュリティ要件です。

利用する場面:

  • OAuth アクセストークンを受け入れて検証する API を構築する
  • API でトークンイントロスペクションまたは JWT 検証を実装する
  • OAuth ベアラートークンを使用して API エンドポイントを保護する

詳細なガイダンスについては、data/asvs/V10.3.md を参照してください。

V10.4 OAuth 認可サーバー

トークンを発行する OAuth 認可サーバーのセキュリティ要件です。

次の場合に使用します:

  • OAuth 認可サーバーを実装または設定する
  • アクセストークン、リフレッシュトークン、認可コードを発行する
  • サードパーティ製の認可サーバーではなく、独自の認可サーバーを構築する

詳しいガイダンスについては、data/asvs/V10.4.md を参照してください。

V10.5 OIDC クライアント

OIDC の依拠当事者(クライアント)として動作するアプリケーションのセキュリティ要件です。

次の場合に使用します:

  • 依拠当事者アプリケーションで OpenID Connect ログインを実装する
  • OIDC ID トークンを検証する
  • OIDC を介してユーザーの本人確認情報(クレーム)を要求する

詳しいガイダンスについては、data/asvs/V10.5.md を参照してください。

V10.6 OpenID プロバイダー

ユーザーを認証して ID トークンを発行する OpenID プロバイダーのセキュリティ要件です。

次の場合に使用します:

  • OpenID プロバイダーを実装または設定する
  • OIDC ID トークンを発行し、ユーザーの本人確認クレームを提供する
  • OIDC をサポートする独自の ID プロバイダーを構築する

詳しいガイダンスについては、data/asvs/V10.6.md を参照してください。

V10.7 同意管理

OAuth および OIDC のフローでユーザーの同意を管理、記録するための要件です。

次の場合に使用します:

  • OAuth の同意画面または認可ダイアログを実装する
  • リソースへの委任アクセスに関するユーザーの同意を管理する
  • ユーザーの同意に関する決定を保存、取り消し、監査する

詳しいガイダンスについては、data/asvs/V10.7.md を参照してください。

V11.1 暗号技術の一覧と文書化

暗号技術の実装を文書化し、一覧にまとめるための要件です。

次の場合に使用します:

  • アプリケーションで採用している暗号技術を文書化する
  • 使用中の暗号アルゴリズムと鍵の一覧を維持する
  • 新しい暗号アルゴリズムまたは耐量子暗号アルゴリズムへの移行を計画する

詳しいガイダンスについては、data/asvs/V11.1.md を参照してください。

V11.2 暗号技術の安全な実装

検証済みのライブラリを使用して暗号処理を正しく実装するための要件です。

次の場合に使用します:

  • アプリケーションコードで暗号処理を実装する
  • 暗号ライブラリまたは API を選択して使用する
  • 暗号プリミティブを正しく使用する

詳しいガイダンスについては、data/asvs/V11.2.md を参照してください。

V11.3 暗号化アルゴリズム

承認された暗号化アルゴリズムを選択し、設定するための要件です。

次の場合に使用します:

  • アプリケーションでデータを暗号化または復号する
  • 対称暗号または非対称暗号のアルゴリズムとモードを選択する
  • 暗号化パラメーター(鍵サイズ、IV、動作モード)を設定する

詳しいガイダンスについては、data/asvs/V11.3.md を参照してください。

V11.4 ハッシュとハッシュベースの関数

承認されたハッシュ関数と HMAC 構成を選択するための要件です。

次の場合に使用します:

  • 完全性の検証またはチェックサムのためにデータをハッシュ化する
  • メッセージ認証に HMAC を使用する
  • パスワード以外のデータに使用するハッシュアルゴリズムを選択する

詳しいガイダンスについては、data/asvs/V11.4.md を参照してください。

V11.5 乱数値

暗号学的に安全な乱数値を生成するための要件です。

次の場合に使用します:

  • ランダムトークン、ノンス、ソルト、鍵を生成する
  • セキュリティが重要な場面で乱数生成器のシードを設定する
  • セッション識別子、CSRF トークン、API キーを生成する

詳しいガイダンスについては、data/asvs/V11.5.md を参照してください。

V11.6 公開鍵暗号

署名と非対称暗号化に公開鍵暗号を使用するための要件です。

次の場合に使用します:

  • 非対称鍵(公開鍵/秘密鍵)でデータに署名する、または署名を検証する
  • RSA または楕円曲線鍵でデータを暗号化する
  • 公開鍵/秘密鍵のペアを管理する
  • デジタル署名または証明書ベースの処理を実装する

詳しいガイダンスについては、data/asvs/V11.6.md を参照してください。

V11.7 使用中データの暗号保護

データが実際に使用されている間に適用する暗号保護の要件です。

次の場合に使用します:

  • メモリ内で処理中のデータを保護する
  • コンフィデンシャルコンピューティングまたはセキュアエンクレーブを実装する
  • 処理中に機密データが露出する時間を最小限に抑える

詳しいガイダンスについては、data/asvs/V11.7.md を参照してください。

V12.1 TLS セキュリティに関する一般的なガイダンス

プロトコルのバージョン、暗号スイート、証明書の管理など、TLS 設定に関する一般的な要件です。

使用する場面:

  • あらゆるサーバーまたはエンドポイントで TLS を設定する場合
  • TLS のバージョンと暗号スイートを選択する場合
  • TLS 証明書と失効を管理する場合

詳細なガイダンスについては、data/asvs/V12.1.md を参照してください。

V12.2 外部公開サービスとの HTTPS 通信

公的に信頼された証明書を含む、外部からアクセス可能なサービスの HTTPS に関する要件です。

使用する場面:

  • HTTP エンドポイントをエンドユーザーまたは外部クライアントに公開する場合
  • 公開されている Web アプリケーションまたは API で HTTPS を設定する場合
  • 外部サービス用の TLS 証明書を取得して導入する場合

詳細なガイダンスについては、data/asvs/V12.2.md を参照してください。

V12.3 サービス間の一般的な通信セキュリティ

内部サービスとバックエンド間の、暗号化され認証された通信に関する要件です。

使用する場面:

  • 内部サービスまたはマイクロサービス間の暗号化通信を設定する場合
  • ネットワーク経由でデータベース、メッセージキュー、キャッシュ、外部 API に接続する場合
  • サービス間で相互 TLS(mTLS)を設定する場合
  • アウトバウンド接続で TLS 証明書を検証する場合

詳細なガイダンスについては、data/asvs/V12.3.md を参照してください。

V13.1 設定のドキュメント化

セキュリティに関わる設定上の判断を文書化するための要件です。

使用する場面:

  • アプリケーションのセキュリティ設定に関する判断を文書化する場合
  • デプロイ環境ごとに必要な設定を定義する場合

詳細なガイダンスについては、data/asvs/V13.1.md を参照してください。

V13.2 バックエンド通信の設定

アプリケーションのアウトバウンドバックエンド接続を安全に設定するための要件です。

使用する場面:

  • アプリケーションからバックエンド(データベース、API、サービス)へのアウトバウンド接続を設定する場合
  • バックエンドとの通信にタイムアウト、再試行、接続プールの設定を行う場合

詳細なガイダンスについては、data/asvs/V13.2.md を参照してください。

V13.3 シークレット管理

アプリケーションのシークレットと認証情報を安全に保存、アクセス、ローテーションするための要件です。

使用する場面:

  • アプリケーションのシークレット、API キー、データベースの認証情報、証明書を保存または参照する場合
  • 環境変数またはシークレットストア(Vault、AWS Secrets Manager など)を設定する場合
  • アプリケーションが使用するシークレットをローテーションまたは監査する場合

詳細なガイダンスについては、data/asvs/V13.3.md を参照してください。

V13.4 意図しない情報漏えい

エラー、ヘッダー、レスポンスを通じてアプリケーションが機密情報を漏えいするのを防ぐための要件です。

使用する場面:

  • クライアントに送信するエラーページや HTTP レスポンスを設定する場合
  • 本番環境でスタックトレース、デバッグ出力、詳細なエラーメッセージを無効にする場合
  • アプリケーションがヘッダーやレスポンスで開示する情報を制御する場合

詳細なガイダンスについては、data/asvs/V13.4.md を参照してください。

V14.1 データ保護のドキュメント化

機密データの保護要件を特定、分類、文書化するための要件です。

使用する場面:

  • アプリケーション内のデータの機密性レベルを分類する場合
  • データカテゴリごとのデータ保護要件を文書化する場合
  • 個人情報(PII)または規制対象データの取り扱いポリシーを設計する場合

詳細なガイダンスについては、data/asvs/V14.1.md を参照してください。

V14.2 一般的なデータ保護

機密データを不正アクセス、漏えい、過度な露出から保護するための要件です。

使用する場面:

  • 機密データ(個人情報、決済情報、認証情報)を送信または保存する場合
  • API レスポンスで返す機密データを制御する場合
  • 機密データが URL、ログ、キャッシュに漏えいするのを防ぐ場合
  • データの保持または削除ポリシーを実施する場合

詳細なガイダンスについては、data/asvs/V14.2.md を参照してください。

V14.3 クライアント側のデータ保護

クライアントデバイスやブラウザーに保存または処理される機密データを保護するための要件です。

以下の場合に使用します。

  • ブラウザーのストレージ(localStorage、sessionStorage、cookies、IndexedDB)にデータを保存する場合
  • ブラウザーやクライアントデバイスにキャッシュされるデータを制御する場合
  • モバイルまたはデスクトップのクライアントアプリケーションで機密データを扱う場合

詳細なガイダンスについては、data/asvs/V14.3.md を参照してください。

V15.1 セキュアコーディングとアーキテクチャの文書化

依存関係のリスク、危険な機能、修正ポリシーを文書化するための要件です。

以下の場合に使用します。

  • サードパーティまたはオープンソースの依存関係を管理する場合
  • アプリケーション内のリスクの高いコンポーネントやセキュリティ上重要なコンポーネントを文書化する場合
  • 脆弱な依存関係の修正期限を定める場合

詳細なガイダンスについては、data/asvs/V15.1.md を参照してください。

V15.2 セキュリティアーキテクチャと依存関係

依存関係の管理、サプライチェーンセキュリティ、リスクの高いコンポーネントのアーキテクチャ上の分離に関する要件です。

以下の場合に使用します。

  • サードパーティライブラリのバージョンと更新を管理する場合
  • アーキテクチャ内で高リスクのコンポーネントをサンドボックス化または分離する場合
  • 依存関係の混同やサプライチェーン攻撃から保護する場合
  • リソースを大量に消費する操作の可用性を考慮して設計する場合

詳細なガイダンスについては、data/asvs/V15.2.md を参照してください。

V15.3 防御的コーディング

セキュリティ上重要なコードパスにおける防御的コーディングの実践に関する要件です。

以下の場合に使用します。

  • 動的実行、リフレクション、またはデシリアライズを使用するコードを記述する場合
  • 低レベルまたはセキュリティ上重要なコードパスで信頼できないデータを扱う場合
  • セキュリティ上重要な関数で入力処理を実装する場合
  • メモリ安全性やインジェクションのリスクについてコードをレビューする場合

詳細なガイダンスについては、data/asvs/V15.3.md を参照してください。

V15.4 安全な並行処理

マルチスレッドコードにおける競合状態やデータ破損を防ぐ、安全な並行処理の要件です。

以下の場合に使用します。

  • マルチスレッドまたは並行処理を行うアプリケーションコードを記述する場合
  • スレッドまたはプロセス間で共有状態や共有リソースを実装する場合
  • ロック、セマフォ、その他の同期プリミティブを使用する場合
  • 非同期処理や並列処理のワークフローを設計する場合

詳細なガイダンスについては、data/asvs/V15.4.md を参照してください。

V16.1 セキュリティログの文書化

ログ記録に関する方針を文書化し、記録すべきイベントを定めるための要件です。

以下の場合に使用します。

  • アプリケーションのログ記録戦略を設計する場合
  • 記録すべきセキュリティイベントを文書化する場合

詳細なガイダンスについては、data/asvs/V16.1.md を参照してください。

V16.2 一般的なログ記録

アプリケーションログに記録する内容とその方法に関する一般的な要件です。

以下の場合に使用します。

  • アプリケーションのログ記録を実装する場合
  • ログメッセージに含める情報を決定する場合
  • ログ形式や出力先を設定する場合

詳細なガイダンスについては、data/asvs/V16.2.md を参照してください。

V16.3 セキュリティイベント

認証や認可の失敗、機密性の高い操作など、セキュリティ関連イベントを記録するための要件です。

以下の場合に使用します。

  • 認証の成功と失敗を記録する場合
  • 認可の失敗やアクセス制御の判断を記録する場合
  • セキュリティ関連のユーザー操作(パスワード変更、アカウント変更)を記録する場合
  • 機密性の高い操作の監査証跡を構築する場合

詳細なガイダンスについては、data/asvs/V16.3.md を参照してください。

V16.4 ログの保護

ログデータを改ざん、インジェクション、不正アクセスから保護するための要件です。

以下の場合に使用します。

  • ログファイルやログパイプラインを改ざんや不正アクセスから保護する場合
  • ログを一元管理された、または変更不可能なログストアに転送する場合
  • フォレンジックや監査の目的でログの完全性を確保する場合

詳細なガイダンスについては、data/asvs/V16.4.md を参照してください。

V16.5 エラー処理

機密情報をユーザーに漏らさず、安全にエラーを処理するための要件です。

以下の場合に使用します。

  • アプリケーションコードでエラー処理や例外管理を実装する場合
  • API の利用者やユーザーにエラーレスポンスを返す場合
  • Web アプリケーションでエラーページやエラーメッセージを設定する場合

詳細なガイダンスについては、data/asvs/V16.5.md を参照してください。

V17.1 TURN サーバー

WebRTC アプリケーションで使用する TURN サーバーのデプロイに関するセキュリティ要件です。

使用する場面:

  • WebRTC の NAT トラバーサル用に TURN サーバーを運用または設定する場合
  • coturn または同様の TURN サーバーインフラストラクチャをデプロイする場合

詳細なガイダンスについては、data/asvs/V17.1.md を参照してください。

V17.2 メディア

リアルタイムの音声および動画ストリームを処理する WebRTC メディアサーバーに関するセキュリティ要件です。

使用する場面:

  • WebRTC メディアサーバー(SFU、MCU、録画サーバー、またはゲートウェイ)をホストする場合
  • サーバー側で SRTP/DTLS メディアストリームを処理またはルーティングする場合
  • リアルタイムの音声/動画会議インフラストラクチャを構築する場合

詳細なガイダンスについては、data/asvs/V17.2.md を参照してください。

V17.3 シグナリング

ピア接続を調整する WebRTC シグナリングサーバーに関するセキュリティ要件です。

使用する場面:

  • WebRTC シグナリングサーバーを実装する場合
  • WebRTC ピア間の SDP オファー/アンサー交換を処理する場合
  • WebRTC セッション確立用のシグナリングチャネルを保護する場合

詳細なガイダンスについては、data/asvs/V17.3.md を参照してください。

コメント