> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 一般的なサイバーセキュリティの脅威を防止する

> 各種サイバー攻撃とそれらを防止するための手段について説明します。

一般的なサイバーセキュリティの脅威には以下が挙げられます。

* バケツリレー攻撃
* リプレイ攻撃
* クロスサイトリクエストフォージェリ（CSRFまたはXSRF）攻撃
* 総当たり攻撃
* 不審なIPのスロットリング
* 資格情報スタッフィング攻撃
* リスト検証攻撃

Auth0には[攻撃防御機能](/docs/ja-jp/secure/attack-protection)があり、特定タイプの攻撃を防御できます。

## バケツリレー攻撃

脅威の1つにバケツリレー攻撃があります。中間者攻撃とも呼ばれるもので、攻撃者が二者の間に割り込みます。二者はそれぞれプライベート接続で交信していると思っていますが、実際には、サードパーティの攻撃者によって制御されています。この種の攻撃が成功するには、攻撃者が二者の間に相互認証を作成する必要があります。

バケツリレー攻撃では通常、攻撃者がWiFiルーターを使用してユーザーの通信を傍受します。ユーザーは攻撃者のルーターに接続し、Webサイトを表示して、機密の資格情報でログインします。攻撃者はこのユーザーのログイン資格情報を保存して、ユーザーになりすますために使用します。

バケツリレー攻撃によっては、アプリケーションとサーバー間で送信されるデータを改ざんできるものもあります。攻撃は、新しいPCの試用やプリインストールされたソフトウェア、ソフトウェア更新ツール、その他のソフトウェアの脆弱性から起きる可能性があります。最悪の場合には、リモートコード実行（RCE）、システムのバックドア、マルウェアのインストールなどの結果になります。また、他のネットワーク資産の侵害にも繋がりかねません。

この種類の攻撃から保護するために、アプリケーションとサーバー間で強力な暗号化と認証を使用することが重要です。暗号化を使用して、サーバーは提示されたデジタル証明書を用いてアプリケーションの要求を認証し、認証に成功した場合にのみ接続が確立されます。たとえば、HTTPSは、ブラウザーのセキュアソケットレイヤー（SSL）機能を使用して、Webトラフィックをマスクします。HTTPS を復号化するには、攻撃者はネットワークトラフィックを暗号化するのに使われた鍵を取得しなければなりません。

サーバーにTLSを構成する際には、TLSv1.2を使用する[Mozilla OpSecの推奨事項](https://wiki.mozilla.org/Security/Server_Side_TLS)を参考にしてください。Mozillaは、[SSL Configuration Generator](https://mozilla.github.io/server-side-tls/ssl-config-generator/)も提供しています。これを使用するには、まずサーバーが実行されているプラットフォームを選択してから、アプリケーションベースの対応内容に基づいて最新の構成を選択します。構成が新しいほど、攻撃を防ぐのに役立つ暗号がより強力になります。

## リプレイ攻撃

リプレイ（プレイバック）攻撃では、攻撃者は以下を行うことができます。

* 通常は簡単にアクセスできないネットワークや情報にアクセスする
* トランザクションを複製する

これらはセキュリティプロトコルに対する攻撃で、別の送信者から意図された受信システムへのデータ送信が再利用されます。攻撃者は、関係者にデータ送信が成功したと思わせて騙します。

リプレイ攻撃はセッショントークンを使用することによって回避できます。また、（XSS攻撃などのように）資格情報がローカルストレージから盗まれた場合には、有効なトークンが永久に保持されるのを防ぐ方法があります。

* トークンの有効期限を短くする
* 使用されたトークンを（場合によってはユーザーも）DenyList（拒否リスト）に追加する方法を提供する
* ワンタイムパスワードを使用する

[JWT](/docs/ja-jp/secure/tokens/json-web-tokens)仕様には、リプレイ攻撃を防ぐ手段として`jti`フィールドが用意されています。Auth0トークンは現在のところ、`jti`を返しませんが、トークンをDenyListに追加することができます。`jti`を使用して、使用しているトークンの数が、指定の回数を上回らないようにします。これで、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=nonce" tip="Nonce: リプレイ攻撃を検出および防止するために、認証プロトコルで1回だけ発行される任意の数値。" cta="用語集の表示">nonce</Tooltip>と類似したもの（トークンの署名をnonceと考える）を実装していることになります。トークンが盗まれたり、指定の回数を超えて使用されたりした場合には、必ずDenyList（拒否リスト）に追加します。そうすることで、有効なトークンが悪用されることを防ぎます。トークンの使用期限が切れると、攻撃者はユーザーになりすますことができなくなります。

リプレイ攻撃はワンタイムパスワードの使用でも回避できます。Auth0の<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=passwordless" tip="パスワードレス: 最初の要素としてパスワードに依存しない認証の形式。" cta="用語集の表示">Passwordless</Tooltip> Authentication（パスワードレス認証）は、従来式のパスワードではなく、1回限り有効のコードやメールのリンクを使用しています。また、Auth0が提供している多要素認証（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=multifactor-authentication" tip="多要素認証（MFA）: ユーザー名とパスワードに加えて、SMS経由のコードなどの要素を使用するユーザー認証プロセス。" cta="用語集の表示">MFA</Tooltip>）は、プッシュ通知やテキストで送信可能なワンタイムパスワードを第2の認証要素として使用しています。

## クロスサイトリクエストフォージェリ攻撃

クロスサイトリクエストフォージェリ（CSRFまたはXSRF）攻撃は、悪意のあるプログラムがWebブラウザーを騙して、ユーザーが認証済みの信頼されたサイトに意図しない操作を実行させるものです。この種の攻撃は、攻撃者に偽の要求に対する応答を知る手段がないため、ユーザーデータの取得ではなく、状態変更要求に的を絞って攻撃し、操作を仕掛けようとします。

送信された要求を検証する1つの方法は、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=oath2" tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集の表示">OAuth 2.0</Tooltip>プロトコルの[状態パラメーター](/docs/ja-jp/secure/attack-protection/state-parameters)を活用して応答を認証することです。

## もっと詳しく

* [トークン](/docs/ja-jp/secure/tokens)
* [攻撃防御](/docs/ja-jp/secure/attack-protection)
* [セキュリティに関する一般的なヒント](/docs/ja-jp/secure/security-guidance/tips)
