Ubuntu被曝严重漏洞:切换系统语言+输入几行命令,就能获取root权限

2020 年 11 月 11 日 量子位
晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

无需系统密码,就能添加新的sudo用户、获取root权限,事后还能删除不留痕迹。

这是GitHub安全研究员Kevin Backhouse发现的一个Ubuntu系统大漏洞。

这种攻击方法非常简单,Backhouse在官方博客中写道:“使用终端中的一些简单命令,并单击几次鼠标,标准用户就可以为自己创建一个管理员帐户。”

目前还在维护的Ubuntu操作系统均受到影响,包括20.10以及20.0418.0416.04三个LTS版。

Backhouse是如何操作的?我们接着往下看。

攻击方法

首先打开终端,在你的主目录下创建一个软链接:

ln -s /dev/zero .pam_environment

(注:如果以上命令无法运行,说明已经存在名为.pam_environment的文件,请把这个文件重命名做好备份!)

接下来,在系统设置中打开“区域和语言”,然后尝试更改语言。

该对话框会冻结,只需忽略它,然后返回到终端即可。

此时,一个名为accounts-daemon的程序正在消耗100%的CPU内核,因此你的计算机可能会变慢并开始变热。

在终端中,删除软链接。否则,你可能无法使用自己的帐户!

rm .pam_environment

下一步是将SIGSTOP信号发送到accounts-daemon,阻止它破坏该CPU内核。但是要做到这一点,首先需要知道accounts-daemon的PID。

你可以通过运行top来找到PID。由于accounts-daemon被卡在一个无限循环中,因此它很快进入top列表的顶部。

或者使用pidof命令来查找PID:

$ pidof accounts-daemon
597

接着用kill命令杀死SIGSTOP信号:

kill -SIGSTOP 597

然后注销帐户,但首先需要设置一个计时器,保证在注销后重置accounts-daemon。否则,前面的努力都将白费。

nohup bash -c “sleep 30s; kill -SIGSEGV 597; kill -SIGCONT 597”

注销后等待几秒钟,让SIGSEGV起效。如果漏洞利用成功,则会显示一系列对话框,让你创建一个新的用户帐户。这个新帐户具有管理员权限,可以运行sudo命令。

Backhouse将整个过程录成了2分多钟的视频,不明白操作方法的可以前去观看:

攻击原理

该漏洞利用了Ubuntu系统中的两个错误:

  • 第一个是accountservice,它是管理计算机上用户帐户的服务。

  • 第二个是GNOME显示管理器(gdm3),它可以处理登录屏幕。

accounts-daemon漏洞

accountsservice守护程序(accounts-daemon)是一项系统服务,可以执行诸如创建新用户帐户或更改用户密码的操作,但也可以执行对安全性较不敏感的操作,例如更改用户的图标或首选语言。

Ubuntu使用了经过修改的accountservice服务版本,添加了一个名为is_in_pam_environment的函数,该函数会在用户的主目录中查找一个名为.pam_environment的文件并进行读取。

将.pam_environment链接到/dev/zero可以让accountservice服务被拒绝。

因为/dev/zero实际上是磁盘上不存在的特殊文件。它由操作系统提供,其行为就像一个无限长的文件,其中每个字节均为0。

当is_in_pam_environment尝试读取.pam_environment时,它会通过软链接重定向到/dev/zero,然后由于/dev/zero无限长而陷入无限循环。

如此操作会让accounts-daemon丧失其root权限,转而采用用户的较低特权。然后将SIGSEGV发送给帐户守护程序使其崩溃。

GNOME漏洞

GNOME显示管理器(gdm3)是Ubuntu用户界面的基本组件。它可以处理用户登录和注销时启动和停止用户会话之类的事情,还管理登录屏幕。

当用户进行新系统的初始设置时,会启动一个对话框,它其实是一个单独的应用程序,称为gnome-initial-setup。

当gdm3查询到用户数量为0时,会启动这个程序。那么gdm3如何检查系统上有多少用户?通过询问accounts-daemon!

不幸的是,accounts-daemon已经被我们前面的操作整崩溃了,所以gdm3在检查超时后认为帐户数量为0,并启动gnome-initial-setup。

而初始化设置的用户必须有管理员权限。

官方紧急修复

Backhouse于10月17日向Ubuntu和GNOME维护人员报告了这些错误,官方已经最新代码中提供了修复程序。建议所有Ubuntu用户都尽快安装更新。

不过,该漏洞仅对桌面版Ubuntu有效。如果使用的是命令行界面,或者是GNOME之外的其他桌面环境,则暂时不受影响。

博客地址:
https://securitylab.github.com/research/Ubuntu-gdm3-accountsservice-LPE

网友讨论:
https://news.ycombinator.com/item?id=25053238

思维不设限,机会无极限。

Apple 邀请你加入机器学习和人工智能团队

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~


登录查看更多
0

相关内容

Ubuntu[国际音标:[uːˈbuːntuː](英语);[ùɓúntú](祖鲁语)]是一个以桌面应用为主的GNU/Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(官方译名“友帮拓”,另有“吾帮托”、“乌班图”、“有奔头”或“乌斑兔”等译名),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。 Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本。
专知会员服务
38+阅读 · 2020年12月20日
【2020干货书】Python3基础导论介绍,98页pdf
专知会员服务
99+阅读 · 2020年10月11日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
通过Termux打造免root安卓渗透工具
黑客技术与网络安全
15+阅读 · 2019年8月16日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
FaceNiff工具 - 适用于黑客的Android应用程序
黑白之道
62+阅读 · 2019年4月7日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
aircrack & hashcat 非字典高速破解目标无线密码
黑白之道
6+阅读 · 2018年8月18日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
Privacy Friendly E-Ticketing For Public Transport
Arxiv
0+阅读 · 2021年1月22日
Arxiv
0+阅读 · 2021年1月11日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
3+阅读 · 2017年5月14日
VIP会员
相关资讯
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
18+阅读 · 2019年10月28日
通过Termux打造免root安卓渗透工具
黑客技术与网络安全
15+阅读 · 2019年8月16日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
FaceNiff工具 - 适用于黑客的Android应用程序
黑白之道
62+阅读 · 2019年4月7日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
aircrack & hashcat 非字典高速破解目标无线密码
黑白之道
6+阅读 · 2018年8月18日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
Top
微信扫码咨询专知VIP会员