Linux 爆 TCP “SACK Panic” 漏洞!N 家中招
Netflix 发现 Linux 和 FreeBSD 内核 TCP 堆栈中存在多个“严重”全漏洞,可导致服务器宕机。
生产环境大量使用 linux 计算机的组织,需要紧急修补新多个补丁,以便阻止远程攻击导致系统崩毁。有三个缺陷影响 Linux 内核处理 TCP 网络的方式,一个影响 FreeBSD TCP 堆栈。
CVE-2019-11477 是最严重的四个缺陷,被称作 “SACK panic”,即 Linux 内核的 TCP 选择性确认(TCP SelectiveAcknowledgement 简称 SACK)功能。
远程攻击者可以利用这个漏洞来触发可能导致计算机崩溃的内核错误(Kernel panic),进而引起拒绝服务。波及 Linux 内核版本 2.6.29 以及高于 2.6.29 以上版本。
Netflix 把 BUG 的细节建议发布在 Github 上,并将它们定性为极其严重漏洞。红帽(RedHat)自己评定 SACK Panic 为严重,而剩余的错误被认为是“中等”。
但是,如果远程攻击者能攻陷托管在亚马逊云(AWS)基础设施上的流媒体巨人的 Linux 主机,网飞对这些 BUG 的严重评级是很中肯的。
AWS 官网
在这方面,AWS 已发布三个修补这些 Linux BUG 的更新(),AWS Elastic Beanstalk,AmazonLinux,基于 Linux 的 EC2 实例,Amazon Linux WorkSpaces 和 Amazon 的 Kubernetes 容器服务将受到这些 BUG 的影响。
一些服务,如 Amazon ElasticCache 如果使用默认配置将不会中招,但如果用户更改了默认配置,将会受到影响。
其他几个 BUG,包含 CVE-2019011478 又名 SACK Slowness,波及低于 4.15 版本的 linux 内核的系统; FreeBSD12 受到另一个 SACK Slowness 漏洞 CVE-2019-5599 影响; CVE-2019-11479 会导致系统过多资源消耗。
这三个 linux 缺陷和内核如何处理具有低值的最大报文段长度(MSS)的 TCP SACK 数据包相关,并受其影响。 RedHat 在其公告中指出,影响仅限于“此时”的拒绝服务,并且不能用于泄露信息的提权。
SACK 是一种用于改善发送者和接受者之间的 TCP 丢包而引起的网络低效问题的机制。
起草 SACK 的 IETF 标准的工程师们解释说:“当一个数据窗口丢失多个数据包时,TCP 可能会遇到性能问题。由于累积确认可用的信息受限,TCP 发送方只能一个周期中只能知道一个丢包。主动发送可以选择提前重新发送数据包,但是这些重新发送的段可能已经被成功接收。
“选择性确认(SACK)机制与选择性重复重传策略相结合,可以帮助克服这些限制。接收 TCP 将 SACK 数据包发送回发送方,通知发送方已收到的数据。发送方只用重发丢失的数据段“。
据 RedHat 称,由于 Linux TCP 实现中使用的数据结构称为套接字缓冲区(SKB),该数据结构能够容最多 17 个分组数据片段,可能引发系统崩溃。
一旦 SKB 达到上限,结果可能导致内核错误(Kernel panic)事件。另外一个因素是最大报文段长度(MSS),或是指定最大承载数据的数量最大尺寸参数它指定重构 TCP 段中包含的数据总量。或者是最大承载数据数量的最大尺寸参数,此参数用于用于指定重构的 TCP 段中包含的数据总量。
RedHat 解释道,“远程用户可以通过将 TCP 连接的最大报文段长度(MSS)设置为 48 字节的最低限制并发送一系列特制的 SACK 数据包来触发此问题。最低 MSS 每段只留下 8 个字节的数据,因此可以增加发送所有数据所需的 TCP 段数。“
修复公告:
到目前为止 Red Hat,Amazon Web Services,SUSE,grsecurity,阿里云,腾讯云,华为云等官方发布公告。
阿里云
2019 年 6 月 18 日,阿里云应急响应中心监控到国外某安全研究组织披露 Linux 内核 TCP SACK 机制存在缺陷,可导致远程拒绝服务。CVE 编号为 CVE-2019-11477、CVE-2019-11478 和 CVE-2019-11479。
漏洞描述
Linux 内核 2.6.29 及之后版本在处理 TCP SACK 机制时存在缺陷,导致整数溢出漏洞,攻击者可以构造特定的 SACK 包,远程触发 Linux 服务器内核模块溢出漏洞,实现远程拒绝服务攻击。
漏洞评级
CVE-2019-11477 高危
CVE-2019-11478 中危
CVE-2019-11479 中危
腾讯云
华为云