リプレイ攻撃

リプレイ攻撃は、攻撃者がメッセージのストリームを 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 ファーム内で共有されません)。

回避事項を次に示します。

関連項目

概念

情報の漏えい
権限の昇格
サービス拒否
改変
サポートされていないシナリオ

その他の技術情報

セキュリティ上の考慮事項