リプレイ攻撃
リプレイ攻撃は、攻撃者がメッセージのストリームを 2 つのパーティ間でコピーし、そのストリームを他の 1 つ以上のパーティにリプレイすることで発生します。攻撃が和らげられていない場合、攻撃対象になったコンピュータはストリームを正当なメッセージとして処理するため、項目の順序が重複するなど、望ましくない状況に陥ります。
バインディングはリフレクション攻撃にさらされる可能性がある
"リフレクション攻撃" は、受信者からの応答であるかのように送信者に返信されるメッセージのリプレイです**。Windows Communication Foundation (WCF) 機構の標準のリプレイ検出では、この攻撃を自動的に処理できません。
WCF のサービス モデルは、署名されたメッセージ ID を要求メッセージに追加し、署名された relates-to ヘッダーを応答メッセージに要求するため、既定でリフレクション攻撃が軽減されます。その結果、要求メッセージを応答としてリプレイできません。セキュリティで保護された信頼できるメッセージ (RM) シナリオでは、リフレクション攻撃は次の理由で軽減されます。
- シーケンス メッセージの作成スキーマとシーケンス応答メッセージの作成スキーマが異なります。
- 一方向シーケンスの場合、クライアントから送信されたシーケンス メッセージをクライアントに対してリプレイすることはできません。これは、クライアントがこのようなメッセージを認識できないためです。
- 双方向シーケンスの場合、2 つのシーケンス ID が一意である必要があります。このため、送信シーケンス メッセージを受信シーケンス メッセージとしてリプレイできません (すべてのシーケンス ヘッダーと本文も署名されています)。
リフレクション攻撃の影響を受けやすい唯一のバインディングは WS-Addressing を使用しないバインディング (WS-Addressing を無効にして、対称キー ベースのセキュリティを使用するカスタム バインディング) です。BasicHttpBinding は、既定では WS-Addressing を使用しませんが、この攻撃を受けやすい方法で対称キー ベースのセキュリティを使用することはありません。
カスタム バインディングに対する攻撃を軽減するには、セキュリティ コンテキストを確立しないか、WS-Addressing ヘッダーを要求します。
Web ファーム : 攻撃者が複数のノードに対して要求をリプレイする
クライアントは、Web ファームに実装されているサービスを使用します。攻撃者は、ファーム内の特定のノードに送信された要求を同じファーム内の別のノードに対してリプレイします。また、サービスが再開されると、リプレイ キャッシュがフラッシュされ、攻撃者が要求をリプレイできるようになります (このキャッシュには、以前使用されたメッセージ署名の値が格納されています。これにより、メッセージ署名は一度しか使用できないため、リプレイを防止できます。リプレイ キャッシュは Web ファーム内で共有されません)。
回避事項を次に示します。
- ステートフルなセキュリティ コンテキスト トークンと共にメッセージ モード セキュリティを使用します (セキュリティで保護されたメッセージ交換を有効にするかどうかは任意)。詳細な情報については、次のページを参照してください。 「方法 : セキュリティで保護されたセッションに対しステートフルなセキュリティ コンテキスト トークンを作成する」を参照してください。
- トランスポート レベルのセキュリティを使用するようにサービスを構成します。
関連項目
概念
情報の漏えい
権限の昇格
サービス拒否
改変
サポートされていないシナリオ