CVE-2004-0230—Guessing TCP 序列号和注入 RST 数据包

CVE-2004-0230—Guessing TCP 序列号和注入 RST 数据包

30208
Created On 09/26/18 13:44 PM - Last Modified 06/01/23 07:13 AM


Resolution


tcp, 当使用较大的窗口大小时, 远程攻击者可以更容易地猜测序列号, 并通过反复注入 tcp RST 数据包, 从而使对持久 TCP 连接的拒绝服务 (连接丢失), 特别是在使用长寿命的协议中。连接, 如 BGP。

 

源︰

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-0230

http://www.rfc-base.org/txt/rfc-5961.txt

 

要使攻击成功, RST 需要位于有效的接收窗口中。攻击者将尝试伪造许多 RST 片段, 试图通过在每个潜在窗口中放置一个数据包来覆盖可能的窗口空间。为此, 攻击者必须拥有或猜测以下几条信息:

 

  • 4元组 (连接两端的 IP 地址和 TCP 端口)。
  • 将在 RST 中使用的序列号。
  • 两个端点正在使用的窗口大小。此值不必是确切的窗口大小, 因为用于代替正确的值的较小的数值只会使攻击者在成功进行此恶作剧之前生成更多的段.   通常, 攻击者具有相当程度的确定性 (知道正在攻击的应用程序), 可以对连接上使用的实际窗口大小进行非常接近的近似.
  • 接收窗口是发件人可以在不接收确认的情况下传输的字节数。

 

在组装完上述信息后, 攻击者开始使用 RST 位集和一个猜到的 tcp 序列号发送欺骗的 tcp 段.  每次发送新的 RST 段时, 序列号猜测都由窗口大小递增。

 

每个应用程序都控制了许多影响成功欺骗攻击的可能性的因素。  这些因素包括:

 

  • 窗口大小
  • 服务器端口号
  • 客户端端口号

 

换言之, 尝试注入 RST 段的平均次数是 (2 ^ 31/窗口) 而不是 2 ^ 31 (2 ^ 31 = 2147483648/32768 = 65536)。窗口越大, 猜测的次数就越少。

 

将数字替换为此公式, 我们可以看到, 对于窗口大小为 32768, 需要传输平均65536个数据包, 以便 "欺骗" tcp 段, 该 tcp 部分可以接受。  窗口大小为65535将此值进一步降低到32768个数据包。  在今天的接入带宽中, 这种大小的攻击是可行的。

 

随着带宽的增加, 家庭和办公室, 它只能预期, 默认窗口大小的值将继续上升, 更好地利用新的可用带宽。

 

仅持续几个简短数据包的 TCP 连接 (通常是 web 通信的情况) 不会受到这样的攻击, 因为可能无法建立连接以使攻击者生成足够的通信量。但是, 某些应用程序 (如 BGP) 被认为可能受到此漏洞的最大影响。bgp 依赖于 bgp 对等方之间的持久 TCP 会话。重置连接可能会导致某些不可用, 因为需要重建路由表和路由扑。对于可以使用 TCP MD5 选项 (如 BGP) 的应用程序, 该选项使此规范中描述的攻击无法有效地进行。

 

RFC 5961 在泛 OS 6.0.0 中实现了威胁缓解



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000CllyCAC&lang=zh_CN&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language