当攻击者复制两方之间的消息流并将流重播给一个或多个参与方时,将发生 重播攻击 。 除非缓解,否则受攻击的计算机会将流作为合法消息进行处理,从而产生一系列错误后果,例如项目的冗余订单。
绑定可能会遭受反射攻击
反射攻击 将消息重播回发送方,就像它们作为答复来自接收方一样。 Windows Communication Foundation (WCF) 机制中的标准 重播检测 不会自动处理此问题。
默认情况下会缓解反射攻击,因为 WCF 服务模型会在请求消息中添加一个已签名的消息 ID,并期待响应消息中包含一个已签名的relates-to
标头。 因此,无法将请求消息作为响应重播。 在安全的可靠消息(RM)方案中,反射攻击会得到缓解,因为:
创建序列架构和创建序列响应消息架构是不同的。
对于简单序列,客户端发送的序列消息无法重播回它,因为客户端无法理解此类消息。
对于双向序列,这两个序列 ID 必须是唯一的。 因此,无法将传出序列消息作为传入序列消息重播回发送方(所有序列标头和正文也都进行了签名)。
唯一容易受到反射攻击的绑定是那些没有 WS 寻址的绑定:禁用 WS-Addressing 并使用基于对称密钥的安全性的自定义绑定。 BasicHttpBinding默认情况下不使用 WS-Addressing,但它不会以允许它容易受到此攻击的方式使用基于对称密钥的安全性。
自定义绑定的缓解是不建立安全上下文或要求使用 WS-Addressing 标头。
网络场:攻击者向多个节点重播请求
客户端使用在网络场中实现的服务。 攻击者重播已发送到服务器场中某个节点的请求,将该请求重新发送到服务器场中的另一个节点。 此外,如果重新启动服务,则刷新重播缓存,使攻击者能够重播请求。 (缓存包含已使用、以前看到的消息签名值并阻止重播,因此这些签名只能使用一次。重播缓存不会在 Web 场之间共享。
缓解措施包括:
将消息模式安全与有状态安全上下文令牌结合使用(启用或不启用安全对话)。 有关详细信息,请参阅 如何:为安全会话创建安全上下文令牌。
将服务配置为使用传输级安全性。