情况:Linux内核TCP堆栈中的两个漏洞已关闭

本月初,安全专家在Linux内核中发现了两个新漏洞:SegmentSmack和FragmentSmack。 两者都与TCP堆栈的工作有关,并允许攻击者在受害者的系统上进行DoS和DDoS攻击。 大多数发行版的“补丁”已经发布。

在削减-更多关于本质。


/摄影Eli Duke CC

为什么这些漏洞很危险?


“邪恶之根” SegmentSmack-函数tcp_collapse_ofo_queue()和tcp_prune_ofo_queue()。 攻击者使用发送到受害者服务器,个人计算机或移动设备的经过特殊修改的TCP段对它们进行呼叫。

这导致内存和处理器资源的过度使用。 因此,黑客可以以每秒仅2000个数据包的流量“挂起”主机或设备。

RedHat网站提供了此类攻击结果的示例。 top命令显示四个CPU内核的全部负载以及处理网络数据包的延迟:

$ top %Cpu25 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.5 si, 0.0 st %Cpu26 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.6 si, 0.0 st %Cpu28 : 0.0 us, 0.3 sy, 0.0 ni, 0.7 id, 0.0 wa, 0.0 hi, 99.0 si, 0.0 st %Cpu30 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.6 si, 0.0 st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 141 root 20 0 0 0 0 R 97.3 0.0 1:16.33 ksoftirqd/26 151 root 20 0 0 0 0 R 97.3 0.0 1:16.68 ksoftirqd/28 136 root 20 0 0 0 0 R 97.0 0.0 0:39.09 ksoftirqd/25 161 root 20 0 0 0 0 R 97.0 0.0 1:16.48 ksoftirqd/30 

请注意,保持“ DoS状态”需要打开TCP会话,因此无法使用IP欺骗进行攻击。

FragmentSmack攻击利用IP数据报分段功能。 当IP数据报传输到链路层时,如果IP数据报不适合frame ,则会将其分段。 因此,它被分段传输,然后主机将其收集在一起。 但是,他只有在收到最后一个片段时才知道数据报的最终长度。

攻击者使用此功能并调整片段偏移值,以便服务器处理器不断组合IPv4和IPv6数据包。

FragmentSmack允许您使用假IP地址来欺骗安全系统(您可以使用IP欺骗)。 但是,与SegmentSmack相比,它需要更快的速度发送数据包-每秒3万个数据包。

RedHat还给出了类似攻击的结果(内核已加载99%):

 top - 08:59:45 up 1:34, 2 users, load average: 0.39, 0.15, 0.08 %Cpu9 : 0.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi,100.0 si, 0.0 st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 54 root 20 0 0 0 0 R 99.7 0.0 0:47.53 ksoftirqd/9 

此类漏洞并非首次发现。 在90年代,在Windows NT 4.0,Windows 95和Linux内核版本直至2.0.32中发现了类似的错误。 该漏洞利用称为泪滴攻击 -攻击者还向目标(网络)设备发送了碎片数据包,从而导致DoS。 该漏洞已修复,但稍后出现。

在2009年,该错误再次在Windows 7和Windows Vista中被发现

谁受伤了


FragmentSmack 威胁从3.9开始的所有版本的Linux内核,SegmentSmack威胁从4.9开始。 您可以在CERT网站上找到其系统具有这些漏洞的供应商列表。

上周,思科报告其操作系统AsyncOS受到SegmentSmack和FragmentSmack的攻击。 因此,该公司发布了许多补丁程序。

如Cisco中所述,可以使用netstat命令来跟踪漏洞的“症状”(例如,在Cisco网站上“危害指标”部分中 )。 如果命令输出显示处于CLOSE_WAIT状态的大量TCP连接,则设备可能会受到这些漏洞的影响。

该怎么治疗


有关多个发行版的SegmentSmack补丁的详细信息已经在CVE上发布(例如,这是Ubuntu 14.04 LTS的补丁)。 在那里,您将找到所有Linux发行版的说明和补丁文件。 至于FragmentSmack,针对此漏​​洞的补丁已由Ubuntu,Red Hat,Debian和Android OS 开发人员推出。


/图片Christopher Michel CC

作为FragmentSmack问题的临时解决方案(如果由于某些原因无法安装补丁),可以将net.ipv4.ipfrag_high_thresh和net.ipv4.ipfrag_low_thresh的值分别更改为256和192 KB(而不是4 MB和3 MB)。

第一个参数设置分配给分片数据包队列的最大内存量。 如果队列长度超过该长度,则片段处理程序将忽略所有数据包,直到队列长度小于ipfrag_low_thresh值为止。

根据网络安全专家Kevin Beaumont(以及该主题的独立博客的作者)的说法,Android所有者可以使用此类命令更改这些值(它们无需重新启动设备即可工作)。



我们在IT-GRAD中所做的工作-主要领域:

虚拟基础架构(IaaS)PCI DSS托管云FZ-152



IaaS博客中的其他内容:



Source: https://habr.com/ru/post/zh-CN421207/


All Articles