1

这是我心中的一个问题,但无法想出解决方案。假设在两个对等体(peer_1,peer_2)之间有一条 IKE 隧道。现在有一个攻击者想要打破这个隧道。攻击者正在做的是,对于从 peer_1 到 peer_2 的每个保持活动信息请求,他/她(攻击者)都会回复 INVALID_IKE_SPI 通知有效负载,并且显然该消息将采用纯文本形式。这导致 peer_1 认为 IKE_SA 出现了一些问题,并且在实现特定重试后,peer_1 关闭了隧道(尽管 rfc 7296 指定接收此类回复的对等方不应更改其状态,但应该结束重试保持活动以摆脱网络洪水)。结果攻击者获胜。

IKEv2 协议本身有什么规定可以防止这种情况吗?

如果有人知道这一点,请回复我,否则一些解决方案也会有所帮助。

4

1 回答 1

0

引用RFC 7296,第 2.4 节,第 3 段

由于 IKE 被设计为在来自网络的 DoS 攻击的情况下运行,端点不得根据任何路由信息(例如,ICMP 消息)或未经加密保护的 IKE 消息(例如,通知消息)得出另一个端点已失败的结论抱怨未知的 SPI)。端点必须仅在重复尝试联系它但在超时时间内未得到应答时或当在不同的 IKE SA 上收到与相同身份验证身份的密码保护的 INITIAL_CONTACT 通知时,才能得出另一个端点失败的结论。一个端点应该根据路由信息怀疑另一个端点发生故障,并发起请求以查看另一个端点是否处于活动状态。为了检查另一端是否处于活动状态,IKE 指定一个空的 INFORMATIONAL 请求(与所有 IKE 请求一样)需要确认(请注意,在 IKE SA 的上下文中,“空”消息由一个 IKE 标头和一个 Encrypted不包含有效负载的有效负载)。如果最近从另一方收到了加密保护的(新鲜的,即未重传的)消息,则可以忽略未受保护的通知消息。实现必须限制他们根据不受保护的消息采取行动的速率。


我认为(为了清楚起见)应该考虑攻击者的相关类型:

1/ 攻击者能够丢弃任意数据包(即活动的中间人)

  • 这个人能够通过丢弃数据包来执行 DOS,AFAIK 没有什么可以阻止他这样做。他不需要任何技巧就可以中断通信。

2/ 攻击者无法丢弃数据包

  • 这不能阻止 peer_2 的合法响应(对 peer_1 的信息请求)到达 peer_1。

  • 因此 peer_1 收到响应(在所有重试超时之前)并知道 peer_2 是活动的。

3/ 攻击者能够丢弃一些数据包

  • 那么这是一场竞赛,结果取决于对等方的配置以及攻击者能够丢弃的数据包的百分比。

编辑>

我会这样理解有问题的“案例 2 攻击者”场景:

  • 通过接收攻击者未受保护的 INVALID_IKE_SPI 通知(由攻击者从 peer_2 的地址欺骗),peer_1 (最多)只能怀疑 peer_2 失败了(因为它不能根据没有加密保护的 IKE 消息得出另一个端点失败的结论

  • 它可以决定(见下面的注释)通过向 peer_2(受密码保护)发送一个空的 INFORMATIONAL 请求来发出活动检查

  • “案例 2 攻击者”无法篡改此请求,因此它应该到达 peer_2(它可能涉及一些特定于实现的重传,如指定的那样)

  • peer_2(因为它是活动的)以确认响应(受密码保护)

  • “案例 2 攻击者”无法篡改此响应,因此它应该到达 peer_1

  • 收到此响应(这是来自 peer_2的新的、受密码保护的消息)后,peer_1 知道 peer_2 是活动的并保留 SA(因为什么都没有发生)

注意:“实现必须根据不受保护的消息限制他们采取行动的速率”部分意味着,peer_1 不应对收到的每个不受保护的通知消息执行此活动性检查,并且必须有一些特定于实现的速率限制机制(可能是防止流量放大)。

免责声明:我不是加密专家,所以请验证我的想法。

于 2015-11-14T20:22:15.997 回答