Linux TCP堆栈中发现三个漏洞,导致远程拒绝服务

linux崩溃

recientemente 发布了有关识别Linux TCP堆栈中几个关键漏洞的新闻 和FreeBSD 允许攻击者远程启动内核故障 或通过处理特制的TCP数据包(死亡数据包)而导致过多的资源消耗。

问题是由数据块最大大小的句柄中的错误引起的 在TCP数据包中(MSS,最大段大小)和选择性连接识别机制(SACK,选择性TCP识别)。

什么是选择性识别?

选择性TCP识别(SACK) 它是一种机制,数据接收者可以将已成功接受的所有段通知给发送者。

埃斯托 允许发送方重新传输丢失的流段 从他的“众所周知”的背景。 禁用TCP SACK时,需要更大的重传集来重传整个序列。

在Linux内核中,此问题已在版本4.4.182、4.9.182、4.14.127、4.19.52和5.1.11中修复。 FreeBSD的解决方案可作为补丁获得。

已针对Debian,RHEL,SUSE / openSUSE,ALT,Ubuntu,Fedora和Arch Linux发布了内核软件包更新。

CVE-2019-11477(简报恐慌)

问题 从2.6.29版本开始在Linux内核中体现出来,并允许您使内核崩溃 由于控制器中发生整数溢出而发送一系列SACK数据包时(紧急)。

对于攻击而言,将TCP连接的MSS值设置为48个字节就足够了 并以某种方式发送一系列已安排的SACK数据包。

问题的实质是结构 tcp_skb_cb(套接字缓冲区) 用于存储17个片段 (“定义MAX_SKB_FRAGS(65536 / PAGE_SIZE +1)=> 17”)。

在发送数据包的过程中,将其放置在发送队列中,并且tcp_skb_cb存储有关该数据包的详细信息,例如序列号,标志以及用于发送的“ tcp_gso_segs”和“ tcp_gso_size”字段分段信息发送给控制器(TSO,分段分段下载)以处理网卡侧的分段。

如果启用了SACK并且驱动程序支持TSO,则在发生数据包丢失或需要选择性地重发数据包时,将保存块。

作为保护的一种解决方法,您可以使用低MSS禁用SACK处理或使用较小的MSS阻止连接(仅在将sysctl net.ipv4.tcp_mtu_probing设置为0并可能破坏某些正常状态时有效)。

CVE-2019-11478(SACK慢度)

这个失败 导致SACK机制中断 (在4.15中使用Linux内核时)或过多的资源消耗。

在处理可用于分割重传队列(TCP重传)的特制SACK数据包时,该问题就会显现出来。 保护解决方案与以前的漏洞相似

CVE-2019-5599(SACK慢度)

允许在处理SACK序列时导致发送的数据包映射的碎片 在单个TCP连接中运行,并导致运行资源密集型列表查找操作。

这个问题在带有RACK丢包检测机制的FreeBSD 12中表现出来。 作为一种解决方法,您可以禁用RACK模块(默认情况下未加载该模块,通过指定sysctl net.inet.tcp.functions_default = freebsd可以禁用它)

CVE-2019-11479

该缺陷使攻击者可以使Linux内核将响应分为多个TCP段, 每个端口仅包含8个字节的数据,这可能导致流量显着增加,CPU负载增加以及通信通道阻塞。

另外,它消耗额外的资源 (处理器电源和网卡)。

此攻击需要攻击者持续不断的努力,并且影响将在攻击者停止发送流量后立即终止。

在进行这种攻击时,系统将以降低的容量运行,从而导致某些用户拒绝服务。

远程用户可以通过设置最大段大小来触发此问题 (MSS)处于最低限度(48个字节),并发送一系列特制SACK数据包。

解决方法是,建议使用低MSS阻止连接。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。