近日,GitHub安全研究员KevinBackhouse发现Ubuntu20.04(长期支持版本)存在一个漏洞,允许任何桌面用户添加新的sudo用户并获得根访问权限。Backhouse指出,利用该漏洞攻击系统的方法非常简单,只需要几个简单的命令就可以为自己创建一个管理员账号。“现代操作系统中的漏洞如此容易被利用是不寻常的。”巴克豪斯还录制了一段视频,详细介绍了他如何利用该漏洞攻击系统。据悉,该漏洞利用了Ubuntu系统中的两个漏洞。一个是accountsservice,一种管理计算机上用户帐户的服务,另一个是GNOME显示管理器(gdm3)中的一个错误。accountsservice漏洞accountsservice的daemon进程accounts-daemon是一个在机器上管理用户账号的系统服务,它可以创建新的用户账号或者修改用户的密码,但是它也可以做一些安全敏感度较低的事情,比如改变用户图标或他们的首选语言。守护进程是在后台运行的程序,没有自己的用户界面。但是,系统设置对话框可以通过称为D-Bus的消息系统与帐户守护程序通信。Ubuntu使用修改后的accountsservice版本,其中包含一些额外的代码,这些代码在freedesktop维护的上游版本中不存在。Ubuntu补丁添加了一个名为is_in_pam_environment的函数,它在用户的主目录中查找名为.pam_environment的文件并读取它。accounts-daemon漏洞通过使.pam_environment成为/dev/zero的符号链接来工作。/dev/zero是一个特殊的文件,它实际上并不存在于磁盘上,它是由操作系统提供的,它的行为就像一个无限长的文件,其中每个字节都是0。当is_in_pam_environment尝试读取.pam_environment时,它会通过软链接重定向到/dev/zero,然后陷入无限循环,因为/dev/zero是无限长的。在这样做的过程中,accounts-daemon失去了它的root权限,承担了用户的较低权限,然后向accounts-daemon发送SIGSEGV并使其崩溃。GNOME漏洞GNOME显示管理器(gdm3)是Ubuntu用户界面的重要组成部分。它处理诸如在用户登录和注销时启动和停止用户会话之类的事情,还管理登录屏幕。gdm3处理的另一件事是新计算机的初始设置。当您在一台新计算机上安装Ubuntu时,您需要做的第一件事就是创建一个用户帐户。初始用户帐户需要设置为管理员,以便用户可以继续设置机器并执行配置wifi和安装应用程序等操作。下面是初始设置界面的屏幕截图(取自漏洞利用视频)。屏幕截图中显示的gnome-initial-setup对话框是一个名为gnome-initial-setup的单独应用程序。当系统上的用户帐户为0时,它由gdm3触发,在新计算机的初始设置期间也是如此。而gdm3只是通过询问accounts-daemon来检查当前机器上的帐户数量。由于accounts-daemon在之前的漏洞中已经崩溃,其D-Bus方法调用查询账户数量超时失败。所以现在gdm3认为用户帐户为零并启动gnome-initial-setup。Backbouse已于上个月向Ubuntu和GNOME维护者提交了漏洞报告,并已进行官方修复。使用Ubuntu+GNOME的用户也请尽快安装补丁。(不使用GNOME的用户暂时不受影响)本文转自OSCHINA。本文标题:JetBrains发布Kotlin桌面UI框架,分享AndroidUI代码本文地址:https://www.oschina.net/news/120434/jetbrains-jetpack-compose-for-desktop
