RFC

RFC
RFC

对多址/多路传输控制协议的威胁分析

摘要

多路传输控制协议(简称MPTCP)描述了一种对传输控制协议的扩展,使得在任意给定的TCP连接上的每个终端节点能够使用多个IP地址来交换数据(而不是通常定义的每个终端节点对应单个IP地址)。这个扩展使得用不同的源—目地址对来交换数据段成为可能,并且成就了在大多数情景下使用多条路径。特别是,通过这个扩展可以实现某种层次的多宿主和移动性支持。然而,对每个终端节点实现多个地址的支持隐含着最终的协议的安全问题。这篇文章包括一份对MPTCP的威胁分析。

这篇文章的状态

这个Internet草案的提交是符合BCP78、79条款的。

Internet草案时IETF的工作文档。别的组也可以提交工作文档作为Internet 草案。当前Internet草案的清单可以在https://www.360docs.net/doc/4f6544841.html,/drafts/current/访问到。

Internet草案的有效期最多为半年。它们随时可以被别的文档更新,替换或者过时。将Internet草案作为引用材料是不合适的,或者直接引用它们而不是作为工作进度那也是不合适的。

这个草案会在2011年6月10号过期。

版权声明

版权所有(c)2010 IETF TRUST 和文档的作者。保留所有权利。

这个文档遵守BCP 78条款和IETF TRUST的与IETF文档相关的法律条款。从这个文档的发布开始生效。请尊重这篇文档并按照它规定的权利和限制来浏览这篇文档。从文档抽出的代码组件必须包含简化BSD许可证文本,如在Trust 法律条款的4.e部分描述。同时这些代码组件是无保证的提供的,如在简化BSD 许可证中描述的一样。

目录

1.简介

2.范围

3.相关工作

4.基本MPTCP

5.洪泛攻击

6.劫持攻击

6.1对基本MPTCP协议的劫持攻击

6.2时移劫持攻击

6.3NA T的思考

7. 建议

8. 安全考虑

9. IANA的考虑

10. 合作者

11. 感谢

12. 引用

12.1规范性引用

12.2非规范性引用

作者地址

1.简介

多路传输控制协议(简称MPTCP)描述了一种对传输控制协议的扩展,使得在任意给定的TCP连接上的每个终端节点能够使用多个IP地址来交换数据(而不是通常定义的每个终端节点对应单个IP地址)。这个扩展使得用不同的源--终地址对来交换数据段成为可能,并且成就了在大多数情景下使用多条路径。特别是,通过这个扩展可以实现某种层次的多宿主和移动性支持。然而,对每个终端节点实现多个地址的支持隐含着最终的协议的安全问题。这篇文章包括一份对MPTCP的威胁分析。需要声明一点的是除了多地址外还有其他的方法实现TCP 连接上的多路径。文章中的威胁分析局限于每个终端节点多地址这种情景下。

2.范围

实现多路径TCP有多种方法。实际上需要的是通过使发送者能够指定路径选择器的某种形式把通信中的不同数据段通过不同路径进行传送。关于路径选择器,有多种选择,包括不同的下一跳,不同出口点的隧道等等。本文中,我们将关注一个特别的方法,叫做MPTCP,依赖于每个终端节点多地址的使用和不同源—目地址对的使用作为多路径的一种表达方式。,所以,本文在剩下的篇幅里MPTCP指的是多地址的多路径TCP。

本文中,我们展示了一份对MPTCP的威胁分析。介绍了在单TCP连接中,对每个终端节点实现多地址支持可能暴露的附加的漏洞。所以,本文的讨论范围局限于可能由实现多地址支持的TCP暴露的附加漏洞,相对现行的TCP协议来说(每个节点在每个连接上只有一个地址)。换句话说,一份完整的威胁分析已经超出本文的范围。本文的目的只是为了帮助MPTCP设计者去创造如现行TCP 协议一样安全的MPTCP协议,并不是比现行的TCP协议更加安全。

特别地,我们将聚焦于不在路径上的攻击者,至少不是整个连接持续周期都在。在现行单路径TCP中,一个路径上的攻击者可以发起大量的攻击,包括窃听,连接劫持—人在中间等等。但是,那是不现实的对于路径外的攻击者发起这些攻击。攻击者在路径上只逗留了很短时间,发起攻击后,便离开了,但是攻击依然有效,这种可能是存在的。这些方法叫做时移攻击。虽然,这些方法在现行的TCP中是不可能的,我们仍然把它们当做分析的一部分。所以,总的来说,我们将考虑来自路径外攻击者发起的攻击和时移攻击。路径上的攻击者发起的攻击已经超出本文的范围,因为它们仍然应用于现行的单路径TCP协议中。

然而,需要提到的是,一些路径上的攻击在多路TCP上变得更加困难,因为在单路径上的攻击者看不到整个数据流。

3.相关工作

关于支持地址灵活性的协议的分析,之前存在着大量的工作了。在这里,我们将呈现最相关的,我们把他们归功为为MPTCP做的努力。

大多数与地址灵活性有关的问题已经被深入分析过了在移动Ipv6路由优化支持(MIPv6 RO)[RFC3775]这篇文章中。[RFC4225]包含了MIPv6 RO安全性设计的合理的元素。在前述中的攻击在这里将发挥作用,并且是我们的分析中很重要的基础。不同之处在于:

在MIPv6 RO里,地址绑定会影响到包含一个地址的所有通信。然而,在MPTCP里,一个单一连接会大受影响。换句话说,如果在IP层对两个地址进行了绑定,那么所有与这些地址有关的连接都会受到影响。然而,MPTCP的情况是,如果一个额外的地址被加进活动中的TCP连接时,这个额外的地址只会影响当前连接,其他连接不会受到影响,即使这个地址被应用于别的连接中。结果是,在MPTCP中,更少的连接会受到波动,最终的漏洞也会更少。另一方面,那也是很重要的,去保证假设的可靠,既对一个给定连接进行地址绑定不会影响其他连接。如果绑定的重用或者信息的安全性加入考虑清单的话,这个假设就不会再成立,并且相应漏洞造成的全部影响要重新评估。

在MIPv6 RO,假设建立连接的原始路径一直有效,如果不是这样的话,通信会失效。在MPTCP里,明确目标是要提供通信复原能力,当地址对中的某对不再能用的时候,那就不可能一直利用原始地址对进行工作。

MIPv6 RO理所当然是为IPv6设计的,而MPTCP明确要实现对IPv4和IPv6的支持。一些MIPv6 RO安全解决方案依赖于对IPv6特性的使用(例如CGAs[RFC3972]的使用),然而在MPTCP环境里是不会被用到的。

不同于MPTCP,MIPv6 RO不包含连接状态信息,比如序列号,端口号等会被以某种形式利用来提供安全性。

在Shim6[RFC5533]的设计里,与地址灵活性相关的类似话题也被谈论到。在[RFC4218]中威胁分析也被呈现。对Shim6的威胁分析也被大量应用到MPTCP 环境里,主要的区别是:

与MPTCP一样,Shim6协议是第三层协议,所以与目标地址有关的所有通信都会受到影响,与MPTCP不同的是,影响会被限制在一个TCP连接里。

与MIPv6 RO一样,Shim6只使用IPv6地址作为标识符,并且利用IPv6的一些特性来提供安全性,例如CGAs或者HBAs[RFC5535],然而在必须支持IPv4的MPTCP环境里,这个是不可能的。

与MIPv6 RO,Shim6不包含连接状态信息,比如序列号,端口号等会被以某种形式利用来提供安全性。

SCTP[RFC4960]是一个传输协议,支持单终端节点多地址,因此,安全隐患与MPTCP非常类似。安全分析里,列出了一些攻击并且建议的解决方案呈现在[RFC5062]文档里。这份分析的结果直接应用到MPTCP的例子里。然而,这份分析的产生是在基本SCTP协议设计完成之后,该文档的目标是本质上提高SCTP的安全性。因此,该文档是符合实际的SCTP规格说明的。并且依赖于SCTP 消息和行为表征这些话题。但是它们中的一些可以转化为MPTCP的例子,一些事由特定的SCTP定义的行为引起的。

所以,结论是虽然我们有大量的相关的前提工作,我们把它们作为这篇分析的基础,同时也还有一部分MPTCP独有的特性使得我们对MPTCP进行一些特定的分析。这篇文章的目标是帮助MPTCP设计者包含一整套安全机制以防止由于采

用MPTCP而产生新的互联网安全漏洞。

4.基本MPTCP

如我们之前所说,这篇文档的目的是为MPTCP协议设计者考虑安全问题的时候提供资料。因此,该分析不是针对专门的MPTCP规格说明的,而是一篇通用的,应用于最广泛的MPTCP设计。为了达到这个目的,我们着重介绍MPTCP协议的基本特征和安全漏洞。在某些例子中,我们将会遇到一些设计选择,那将会严重影响最终协议的安全方面的特性。在那样的例子里,我们会考虑多样选择和表征设计。

我们假设任何MPTCP在单终端单地址环境下表现得和TCP一样。也就是说,一个MPTCP连接是通过三次握手建立的,并且使用单地址对。

被用做建立连接的地址扮演了一个特别的角色,即被上层协议当做标识符。特别地,在SYN包里用做目的地址是被应用程序用做标识对等层,并且已经通过DNS (有或无DNSSEC验证)获得,或者通过引用传播,或者被用户人为引进。因此,创始人有一定的信用,在使用这个特殊地址建立通信这个事实上。归功于MPTCP,数据包被传输到不同的地址,发起者在那个地址建立起来的信誉会受损。无论如何,MPTCP的采用使传统TCP信誉模型发生进化,在这个模型里,发起者额外信任对等端所以提供额外的地址,跟原始地址对一样可以信任。一个不能信任对等端的应用或实现不应该使用多路径。

在三次握手期间,序列号在两端是同步的,跟常规TCP类似。我们假设,一个MPTCP连接在数据传输时使用一个序列号,即使数据是通过不同路径传输的,因为MPTCP提供有序的字节流传输服务。

一旦连接建立完成,MPTCP扩展可以用来为每个终端节点增加地址。为了达到此功能,每个终端需要发送一个包含地址的控制报文。为了把这个额外的地址关联进现行的连接中,该连接需要被标识。我们假设,连接可以被四元组标识,包括源地址,源端口,目的地址,目的端口同时也被使用当连接的建立的时候。所以,至少,包含新增地址信息的控制信息报文也可以包含以上四元组,以表明该地址属于哪个连接(如果没有其他连接被标识的话)。

有两种不同的方法来传输地址信息:

明模式:控制报文包含一系列地址

暗模式:新增地址被添加进源地址的IP头里

这两种不同的模式对于某些类型的攻击会表现出不同的安全属性。明模式貌似是最脆弱的。特别的,暗模式会从前述的过滤安全形式中受益,减少了攻击者随意添加地址进现行连接中的可能性。需要注意的是,前述中过滤部署远远不是通用的,所以那是不明智的依赖它来作为MPTCP的保护的基础。

另外,关于前述过滤和暗模式信号之间交互的更深层次的考虑需要提出,当移除一个对当前MPTCP连接不再有效的地址。特别地,依附于运行前述过滤和暗模式信号的网络的主机不能够在现行MPTCP连接中移除失效地址(由于失败或者移动事件)。

另外,我们假设MPTCP会使用所有的能够发送包的地址对和基于不同路径的拥塞情况分配传输负载。

5.洪泛攻击

第一种被地址灵活性引进的攻击被称为洪泛或者爆炸式攻击。攻击的方案如下图

所示:

+--------+ (step 1) +------+

|Attacker| ------------------------- |Source|

| A |IPA IPS| S |

+--------+ /+------+

/

(step 2) /

/

v IPT

+------+

|Target|

| T |

+------+

该图由地址为IPA的攻击者A,地址为IPS的服务器S,地址为IPT的目标机器组成。服务器S能够产生大量的流量。

攻击的第一步是,攻击者A和服务器S建立一个MPTCP连接,并且下载大量的数据。初始连接只包含了每个终端单地址这种情况,即地址IPA和IPS 。一旦下载在进行中,第二步是攻击者A将地址IPT加进可用通信地址里。新地址是怎么加进去的依赖于MPTCP的地址管理模式。明地址管理模式中,攻击者A只需将地址IPT放进信号包里传输。在暗地址管理模式中,攻击者A需要发送一个包,但是源地址是IPT。依赖于前述过滤是否被部署和攻击者的位置,也许可能或者不可能,去发送那样的数据包。在这一步,该MPTCP连接依然保持着一个地址对于服务器S,即IPS,但是对于攻击者A,有两个地址,即IPA和IPT。攻击者现在尝试使服务器发送下载的流量到地址为IPT的目标机器上。攻击者可以通过假装IPA和IPT之间的路径是拥塞的,而IPT和IPS之间是通畅的来达到目的。为了达到伪装,需要对IPS和IPT之间传输的数据发送确认报文,而不对发给IPA的数据发送确认报文。实际的细节依赖于通过不同路径传输的数据是怎么完成确认的。一种可能是对用给定地址对传输的数据进行确认时,用的也是相同的地址对。因此,攻击者需要使用IPT当做源地址发送确认报文以保证攻击流。依赖于前述过滤是否被部署和攻击者的位置,也许可能或者不可能,去发送那样的数据包。攻击者同时也需要去猜测发送给目标机器的数据的序列号。一旦攻击者成功执行这些操作,攻击就绪并且数据流会冲向目标机器。需要说明的是,在这种类型的攻击中,服务器S一直都以为自己发送数据给IPA机器,虽然实际上发送数据是给目标机器IPT。

一旦来自服务器S的数据流击中目标机器,它马上产生反应。特别地,由于这些数据包属于一个不存在的连接,目标机器会发起RST报文。去理解MPTCP协议如何对即将到来的RST报文做出反应是很有关联必要的。至少,接收到一个RST报文的MPTCP协议应该终止该特殊地址对上的数据交换(也许不是整个MPTCP连接,至少不应该再发送更多数据在RST报文中相关的地址对上)。然而,如果攻击者在重定向数据流之前已经可观地提高了窗口值,传送域足够大以致能够对目标节点发送大流量数据。攻击者需要执行一些微妙的操作以达到发动一次大的进攻。一方面,把窗口值增加到足够大以使传送域足够大以引起足够的效应。另一方面,攻击者要能够制造IPA和IPS之间拥塞这种假象,这样就能够不需要大量减少窗口值就能够把数据流重定向到另外的路径上。这极大依赖于不

同路径之间的窗口机制是如何工作的,尤其是窗口值是怎么增加的。一些拥塞控制的窗口机制设计会使得这些攻击无效。特别地,如果MPTCP协议需要执行慢开始机制在每次子流的传输中,洪泛流就会被限制在慢开始机制的初始窗口值内。

之前的协议,比如MIPv6 RO和SCTP,它们是采用可达检查机制在发送数据到一个新地址前来处理这个问题的。换句话说,在别的协议里用到的这个方法中,数据源S会明文询问新地址的主机(在这个例子中,主机T的地址是IPT),是否愿意接收来自被4元组—IPA,端口A,IPS,端口S标识的连接上的数据包。因为这不是目标机器T建立的连接的一部分,T就不会接受请求,数据源S也不会用IPT当目标地址在此连接上发送数据。通常,请求报文应该包括一个随机数,这样攻击者A就不能够轻易地针对这个请求伪造响应。特别地,在SCTP例子里,会发送一个包含64位的随机数的报文。

一个可行的测试可达的方法是三次握手,对每个在MPTCP连接上用到的新地址对。尽管还有别的原因去如此做(比如NAT遍历),这同时也是一个测试可达性的并且会阻止洪泛攻击的方法。

另一种在MPTCP里可能的洪泛攻击方法是攻击者和对等端发起通信,并且包含了一系列可选的地址清单在明文模式中。如果对等端决定和所有可行的地址建立子流,那样攻击者就达到了放大攻击的效果,因为通过发送一个包括所有可选地址的包,它能够触发对等端产生并发送数据包到所有目的端。

相关主题
相关文档
最新文档