2019年6月18日,RedHat官网发布报告:安全研究人员在Linux 内核处理TCP SACK数据包模块中发现了三个漏洞,CVE编号为CVE-2019-11477、CVE-2019-11478 和 CVE-2019-11479,其中 CVE-2019-11477 漏洞能够降低系统运行效率,并可能被远程攻击者用于 拒绝服务攻击,影响程度严重。
漏洞概述
SACK Panic 漏洞通过“在具有较小值的 TCP MSS 的 TCP 连接上发 送精心设计的 SACK 段序列”来利用它,这会触发整数溢出。
CVE-2019-11478(被称为 SACK Slowness)可通过发送“一个精心设 计的 SACK 序列来分解 TCP 重传队列”来利用,而 CVE-2019-11479 允许攻击者触发 DoS 通过发送“具有低 MSS 值的精心制作的数据 包来触发过多的资源消耗”来进行状态。
CVE-2019-5599 是 CVE-2019-11478 的 FreeBSD 版本,它使用 RACK TCP 堆栈影响 FreeBSD 12 的安装,并且可以通过提供“一个精心 设计的 SACK 序列来破坏 RACK 发送映射”。
漏洞危害
攻击者可以通过发送一系列特定的 SACK 包,触发内核模块的整数溢出漏洞,进而实行远程拒绝服务攻击。
受影响范围
Linux 内核 2.6.29 及以上版本。
修复建议
1、及时安装补丁文件:
(1)第一个补丁
https://github.com/Netflix/security- bulletins/blob/master/advisories/third-party/2019- 001/PATCH_net_1_4.patch
(2)Linux 内核 4.14 及以上版本需要打第二个补丁
https://github.com/Netflix/securitybulletins/blob/master/ad visories/third-party/2019-001/PATCH_net_1a.patch
(3)CVE-2019-11478 补丁
https://github.com/Netflix/securitybulletins/blob/master/a dvisories/third-party/2019-001/PATCH_net_2_4.patch
(4)CVE-2019-11479 补丁
https://github.com/Netflix/security- bulletins/blob/master/advisories/third-party/2019- 001/PATCH_net_3_4.patch
https://github.com/Netflix/security- bulletins/blob/master/advisories/third-party/2019- 001/PATCH_net_4_4.patch
https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019- 001/split_limit.patch
并将net.inet.tcp.rack.split_limit sysctl 设置为合理的值来 修补 CVE-2019-5599 以限制 SACK 表的大小。
2、临时解决方案(若暂不便安装补丁更新,可采取下列临时防护措 施):
(1)用户和管理员可以完全禁用系统上的 SACK 处理(通过将/ proc/ sys / net / ipv4 / tcp_sack 设置为 0)或使用 Netflix 信息安 全提供的过滤器阻止与低 MSS 的连接 - 第二个缓解措施仅在禁用 TCP 探测时才有效。
参考命令:
echo 0 > /proc/sys/net/ipv4/tcp_sack
或者 sysctl -w net.ipv4.tcp_sack=0
(2) CVE-2019-11478 和 CVE-2019-11479 都 可 以 通 过 使 用Netflix 信息安全提供的过滤器阻止具有低MSS的远程网络连接来 缓解 - 应用过滤器可能随后破坏低 MMS 合法连接。只需切换 RACK TCP 堆栈即可缓解 FreeBSD 漏洞。
参考命令:
可以防火墙设置限制MSS大小,对太小的包直接DROP。
iptables -I INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP