悲剧的 SACK:各种设备都能被 “Ping of Death” 网络包搞崩溃
打上补丁,实施应用缓解措施,别再让黑帽子用奇奇怪怪的 SACK 玩弄你的设备了。
联网 Linux 服务器、PC、智能手机、平板电脑和各种小设备都有可能被恶意构造的网络包搞崩溃,要不就是网速受到严重影响。同样的攻击甚至 FreeBSD 都有可能沦陷。
当今世界大量东西都是建立在 Linux 基础上的,从网络电视、路由器、恒温器、电灯开关、闭路电视摄像头和扫地机器人,到服务器、PC、安卓及 ChromeOS 设备、智能冰箱、透析机、车载资讯娱乐系统、牵引器、施工设备和铀浓缩机等等,只要有漏洞,全都可能被黑客搞宕机。
换句话说,陌生人可以通过网络向你的设备 ping 些数据,如果你防护不周,那就有可能宕机或断网。既不高端,也不可怕;但如果脚本小子发起一波又一波的漏洞利用,对没网络不成活的网民来说就是极大的困扰了。
补丁和缓解措施都是现成的,如果需要的话可以手动应用,也可以等供应商推送安全补丁到风险设备上。或者采取变通方案:把 “/proc/sys/net/ipv4/tcp_sack” 设置成 “0”。
都是SACK惹的祸
ping 攻击的核心是别称 SACK Panic 的 CVE-2019-11477 编程漏洞:可远程搞崩 Linux 内核 2.6.29 及更高版本系统的漏洞,2.6.29 版内核已发布 10 年之久。
还有其他 3 个相关漏洞:
1. CVE-2019-11478,别称 SACK Slowness,影响 4.15 前的 Linux 内核版本,所有版本均受一定程度的影响;
2. CVE-2019-5599,也称 SACK Slowness,使用 RACK TCP 堆栈影响 FreeBSD;
3. CVE-2019-11479,低 MSS 值触发的过多资源消耗,影响所有 Linux 内核版本。
这些漏洞是 Netflix 信息安全人员乔纳森·鲁尼 (Jonathan Looney) 发现并报告的。6月18日发布于 GitHub 上的安全漏洞咨询对此有所描述。
几个漏洞基本上都利用了 Linux 默认开启的 TCP SACK 功能。SACK (选择性确认:Selective ACKnowledgement)功能旨在加速计算机间的数据传输,可以让数据接收方更准确地告诉发送方自己收到了多少数据,还需要重发哪些数据。理想状态下,该功能应能减少需要重发的数据,收发双方都能更快速地传输文件和其他信息。有些管理员会因为各种各样的原因禁用该功能,其中一个原因就是有些操作系统对此功能的实现实在不怎么好。
利用 CVE-2019-11477 漏洞,一连串 TCP SACK 响应可致 Linux 内核意外达到内部数据结构上限,触发致命混乱。Red Hat 在6月18日发布的技术摘要中称,其他几个影响 Linux 的漏洞则会迫使系统消耗大量资源,拖慢运行速度。
另外,CVE-2019-5599 是 FreeBSD 在 SACK 响应处理方式上的漏洞:可破坏跟踪 SACK 的内部数据结构,致使内核遍历过长链表,拖慢系统运行速度。
截至目前,Red Hat、AWS、SUSE 和 Grsecurity 均发布了漏洞咨询或不日推出漏洞补丁的声明,其他供应商应该也会很快跟进。
不管怎样,禁用 SACK 是目前比较明智的权变措施,但要注意禁用之后网络吞吐率可能会受影响。
Netflix 安全漏洞咨询:
https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md
Red Hat 技术摘要: