Red Hat Linux 严重 Bug 将影响基于 Haswell 架构的服务器

  • Jeff Martin
  • 魏星

2015 年 6 月 1 日

话题:安全LinuxDevOps语言 & 开发

最近,Azul Systems公司的 CTO 与联合创始人Gil Tene在 Google Groups报告了一个十分重要,但鲜为人知的Linux 内核补丁,采用英特尔Haswell架构的 Linux 系统用户和管理员尤其应该关注该问题。特别是基于 Red Hat 发行版的用户(包括CentOS 6.6 以及Scientific Linux6.6),应该立即更新这个补丁。即便是运行在虚拟机中的 Linux,如果这个虚拟机是在流行的云平台上(如 Azure、Amazon 等),它也可能跑在 Haswell 机器上,打补丁应该是有好处的。

Tene 是对该缺陷的描述如下:

“这个内核漏洞的影响非常简单:在一些看似不可能的情况下,用户进程会死锁并被挂起。任何一个futex调用等待(即使被正确地唤醒)都有可能永远被阻止执行。就像 Java 里的 Thread.park() 可能会一直阻塞那样,等等。如果足够幸运,你会在 dmesg 日志中发现 soft lockup 消息;如果没那么幸运(比如跟我们这样),你将不得不花几个月的人工成本去排查代码中的问题,还有可能一无所获。”

Tene 继续解释了这个缺陷代码是如何执行的(最终可以归结到一个遗漏了 default 情况的 switch 块)。现在最大的问题是,尽管问题代码已经在 2014 年 1 月修复,但是在 2014 年 10 月左右,该缺陷又被移回了 Red Hat 6.6 家族系统中。其他系统包括 SLES、Ubuntu、Debian 等有可能也被影响了。

这些系统的修复情况现在并不一致,并且有可能被忽略。Red Hat 用户应该采用 RHEL 6.6.z 或更新的版本。Tene 还指出另一个关键点在于,对于要将哪些东西放入内核,不同的发行版会有不同的选择,这也导致问题的修复情况并不一致。

例如,对于 RHEL 7.1 而言,“其实上游的 3.10 内核是没有这个 bug 的,但 RHEL 7 的内核又不是纯粹的上游版本。不幸的是,RHEL 7.1(就像 RHEL 6.6 那样)在移植的时候把(基于 RHEL 7 版本)这个 bug 包含了进去...... 我认为其他发行版可能也是这么做的。”

对基于 RHEL 的发行版,Tene 提供了一个快速参考列表:

RHEL 5(包括 CentOS 5 和 Scientific Linux 5):所有版本(包括 5.11 版)都没有问题。

RHEL 6(包括 CentOS 6 和 Scientific Linux 6):从 6.0~6.5 版都没问题。 但 6.6 版存在缺陷,而 6.6.z 版本没有问题。

RHEL 7(包括 CentOS 7 和 Scientific Linux 7):7.1 是有缺陷的。并且截至 2015 年 5 月 13 日也没有一个 7.x 的修复。

尽管在Hacker News上对受影响系统的数量存在一些争议,但它提供了一些环境来检查你的系统是否需要修复。

编者注:在将于 2015 年 10 月 15 日~17 日举行的QCon 上海 2015 大会上,Azul Systems 联合创始人兼 CTO Gil Tene将做主题演讲。他是著名的 Java 和 JVM 专家。6 月 21 日之前报名,可享 7 折优惠。

查看英文原文:Serious Red Hat Linux Bug Affects Haswell-based Servers


感谢臧秀涛对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

安全LinuxDevOps语言 & 开发