TCP“偏离路径”攻击 (CVE-2016-5696)

信息安全 网络 linux tcp
2021-08-31 22:33:37

今天我读到最近的 TCP 规范中的一个缺陷导致在两个通信方之间注入恶意内容。攻击向量如何工作?

我还阅读了一篇文章,其中该人将值随机写入/proc/sys/net/ipv4/tcp_challenge_ack_limit可以帮助减轻攻击。这是真的吗?

链接到解释攻击的论文:“Off-Path TCP Exploits: Global Rate Limit Considered Dangerous”请注意,这不是关于路径外 TCP 序列推断攻击。阅读论文。

1个回答

...导致注射

该漏洞不会导致注入,但它允许攻击者注入数据。即没有无意的数据损坏,而是攻击者有针对性的修改。

攻击向量如何工作?

既然你已经参考了这篇论文,我希望你已经阅读过它。您不完全了解哪些部分?但总结一下:

  • 接管 TCP 连接的难点在于猜测客户端的源端口和当前序列号
  • 与挑战 ACK (RFC5961) 一起引入的发送挑战 ACK 的全局速率限制(Linux 中为 100/s)使得在第一步猜测客户端连接使用的源端口并在下一步猜测序列号成为可能. 主要思想是打开与服务器的连接,并与攻击者的源一起发送尽可能多的具有错误序列的 RST 数据包和一些欺骗性数据包。通过计算有多少挑战 ACK 被返回给攻击者并知道速率限制,我们可以推断出有多少欺骗数据包导致了对欺骗客户端的挑战 ACK,从而有多少猜测是正确的。这种方式可以快速缩小端口和序列的哪些值是正确的。这种攻击可以在几秒钟内完成。
  • 当然,攻击者需要能够欺骗客户端的 IP 地址,这并非在所有环境中都是如此。这在本地网络中可能是可能的(取决于安全措施),但是当从通常的 DSL/有线/移动帐户完成时,ISP 通常会阻止 IP 欺骗。

但是要真正了解攻击,您需要了解使用了哪些挑战 ACK(防御外路 TCP RST)以及它们是如何工作的。因此,阅读 RFC 5961 也可能很有用。

随机化 /proc/sys/net/ipv4/tcp_challenge_ack_limit 中的值。是真的吗?

将其设置为随机值并保持在那里可能无济于事,因为攻击可以计算出新的静态限制。每隔几秒更改一次值将有助于混淆攻击。将值设置为非常大的值也会使攻击变得不可能。