再生攻撃は、攻撃者が 2 つのパーティー間でメッセージのストリームをコピーし、そのストリームを 1 つ以上のパーティーに再生するときに発生します。 軽減されない限り、攻撃の対象となるコンピューターはストリームを正当なメッセージとして処理し、項目の冗長な順序など、さまざまな悪い結果をもたらします。
バインディングはリフレクション攻撃にさらされる可能性がある
リフレクション攻撃 は、受信者から応答として送信されたかのように、送信者に返されるメッセージの再生です。 Windows Communication Foundation (WCF) メカニズムの標準的な 再生検出 では、この処理は自動的には行われません。
WCF サービス モデルでは、メッセージを要求するために署名付きメッセージ ID が追加され、応答メッセージに署名された relates-to
ヘッダーが必要であるため、リフレクション攻撃は既定で軽減されます。 そのため、要求メッセージを応答として再生することはできません。 セキュリティで保護された信頼できるメッセージ (RM) のシナリオでは、リフレクション攻撃は次の理由で軽減されます。
シーケンス作成メッセージスキーマとシーケンス作成応答メッセージスキーマは異なります。
一方向シーケンスの場合、クライアントから送信されたシーケンス メッセージをクライアントに対してリプレイすることはできません。これは、クライアントがこのようなメッセージを認識できないためです。
双方向シーケンスの場合、2 つのシーケンス ID は一意である必要があります。 したがって、送信シーケンス メッセージを受信シーケンス メッセージとして再生することはできません (すべてのシーケンス ヘッダーと本文も署名されています)。
リフレクション攻撃の影響を受けやすいバインディングは、WS-Addressing を使用しないバインディングのみです。カスタム バインドは、WS-Addressing 無効になり、対称キーベースのセキュリティを使用します。 BasicHttpBindingでは既定では WS-Addressing は使用されませんが、この攻撃に対して脆弱になるように対称キーベースのセキュリティは使用されません。
カスタム バインドの軽減策は、セキュリティ コンテキストを確立しないか、WS-Addressing ヘッダーを要求することです。
ウェブファーム: 攻撃者が複数のノードに要求をリプレイする
クライアントは、Web ファームに実装されているサービスを使用します。 攻撃者は、ファーム内のあるノードに送信された要求をファーム内の別のノードに再生します。 さらに、サービスが再起動されると、再生キャッシュがフラッシュされ、攻撃者が要求を再生できるようになります。 (キャッシュには、以前に表示された使用済みのメッセージ署名値が含まれており、それらの署名を 1 回だけ使用できるように、再生を防止します。再生キャッシュは、Web ファーム間で共有されません)。
軽減策は次のとおりです。
状態を保持するセキュリティコンテキストトークンを使用して、メッセージモードセキュリティを利用します(セキュアコンバーサーションの有効化に関わらず)。 詳細については、「 方法: セキュリティで保護されたセッションのセキュリティ コンテキスト トークンを作成する」を参照してください。
トランスポート レベルのセキュリティを使用するようにサービスを構成します。