CVE-2014-0196

简单说,这是一个存在了5年,从 Linux 2.6.31-rc3 起便存在的本地代码执行漏洞,导致问题,攻击者会获取 root shell 直到今年5月3日才被修复。

CVE-2014-0196 A race condition in the pty (pseudo terminal) layer (writer buffer handling), which could be used by attackers to corrupt kernel memory and cause denial of service (system crash) or privilege escalation.

详细的问题描述见 SUSE Bugzilla ticket 其中包含两个 PoC 攻击代码。

漏洞是 SUSE 的 Jiri Slaby 发现并修复的,见 patch 就三行代码 :-D

八卦一下 Jiri 其人,第一次注意到他的名字是 SUSE 宣布 kGraft Live Kernel Patch 项目时,他是主力开发者。从30周介绍30位内核开发者系列来看,他已是资深的 Linux 内核开发者,且擅长 Serial 和 TTY 层,是代码清道夫,所以发现 drivers/tty/n_tty.c 里的问题也顺理成章。

言归正传,受此漏洞影响最大的莫过于共享 web 主机了,服务提供商若不及时给内核打补丁,就会被攻击者利用获得本地 root shell 爆菊。

出于好奇,用第二个 PoC 攻击代码测试了一下,结果如下:

  • Arch Linux 3.14.3-1-ARCH 受影响,很快便获取 root shell
  • Ubuntu Server 14.04 LTS 系统设置为自动升级,无效
  • Debian 7.5 更新至当时最新,无效
  • CentOS 6.5 貌似直接出错退出了

Arch Linux 上测试结果见图,注意这是在虚拟机里测的,没用自己的笔记本怕 oops 或 panic 系统崩溃掉 ;-D

cve-2014-0196

查了一下发现:

  • Ubuntu 14.04 LTS 在5月5日出安全更新已修复,响应速度非常快
  • Debian stable (wheezy) 也已在5月12日安全更新中升级内核到 3.2.57-3+deb7u1 中修复漏洞
  • Arch 在更新到 3.14.3-2-ARCH 之后也已修复,根据 CVE-2014 linux 响应时间为7天 linux-grsec 响应时间小于1天,嘿嘿
  • openSUSE 13.1 看起来也在5月5日就修复了
  • RHEL / CentOS 5.x 据说不受影响,和 OpenSSL heartbleed 一样,哭笑不得

对内核安全漏洞的响应速度,是决定发行版选择的重要原因之一。大家可以参考。

Ksplice 在5月7日和8日,分别在后台自动给运行中的 Ubuntu 14.04 和 Ubuntu 12.04 内核打上了 CVE-2014-0196 补丁,直接免疫(其实一个人用不存在问题)。后者是 Digital Ocean KVM VPS 已经跑了290天,准备满一年升级到下一个 LTS ;-) 能免费用 Ksplice 是当初 VPS 选 Ubuntu Server 而非 Debian 稳定版的原因,看图,不解释了。

ksplice for Ubuntu Server

最后,真不是给 Ksplice 打广告。目前 kGraftkpatch 之争局势还不明了,只能靠它了。希望很快能见分晓,两者能合作进入 mainline 自然最好。

参考: