近日,GitHub 安全研究員 Kevin Backhouse 發(fā)現(xiàn)了 Ubuntu 20.04(一個(gè)長(zhǎng)期支持版本)中的漏洞,該漏洞可以使任何桌面用戶無(wú)需系統(tǒng)密碼,即可添加新的 sudo 用戶,并獲得 root 訪問(wèn)權(quán)限。
Backhouse 指出,利用該漏洞攻擊系統(tǒng)的方法非常簡(jiǎn)單,只需要一些簡(jiǎn)單的命令就能為自己創(chuàng)建一個(gè)管理員賬戶。“現(xiàn)代操作系統(tǒng)中的漏洞如此容易被利用是不尋常的。“Backhouse 還錄制了視頻詳細(xì)展示了自己如何利用這個(gè)漏洞對(duì)系統(tǒng)進(jìn)行攻擊。
據(jù)悉,該漏洞利用了 Ubuntu 系統(tǒng)中的兩個(gè)錯(cuò)誤。一個(gè)是管理計(jì)算機(jī)上用戶賬戶的服務(wù) accountsservice,另一個(gè)是 GNOME 顯示管理器(gdm3) 的 BUG。
accountsservice 漏洞
accountservice 的守護(hù)進(jìn)程 accounts-daemon 是管理機(jī)器上用戶賬戶的系統(tǒng)服務(wù),它可以創(chuàng)建一個(gè)新的用戶賬戶或更改用戶的密碼,但它也可以做一些安全敏感度較低的事情,比如更改用戶的圖標(biāo)或他們喜歡的語(yǔ)言。守護(hù)進(jìn)程是在后臺(tái)運(yùn)行的程序,沒(méi)有自己的用戶界面。然而,系統(tǒng)設(shè)置對(duì)話框可以通過(guò)一個(gè)稱為 D-Bus 的消息系統(tǒng)與賬戶-守護(hù)進(jìn)程進(jìn)行通信。
而 Ubuntu 使用了一個(gè)修改過(guò)的 accountsservice 版本,其中包含了一些額外的代碼,而這些代碼在 freedesktop 維護(hù)的上游版本中并不存在。Ubuntu 的補(bǔ)丁增加了一個(gè)名為 is_in_pam_environment 的函數(shù),它在用戶的主目錄中尋找一個(gè)名為 .pam_environment 的文件,并讀取它。
accounts-daemon 漏洞的工作原理是將 .pam_environment 作為一個(gè)指向 /dev/zero 的軟鏈接。/dev/zero 是一個(gè)特殊的文件,實(shí)際上并不存在于磁盤上,它是由操作系統(tǒng)提供的,它的行為就像一個(gè)無(wú)限長(zhǎng)的文件,其中的每一個(gè)字節(jié)都是 0 。當(dāng) is_in_pam_environment 試圖讀取 .pam_environment時(shí),它會(huì)被軟鏈接重定向到 /dev/zero,然后陷入無(wú)限循環(huán),因?yàn)?/dev/zero 是無(wú)限長(zhǎng)的。
這樣一來(lái),accounts-daemon 就會(huì)喪失其 root 權(quán)限,轉(zhuǎn)而采用用戶的較低特權(quán),然后將 SIGSEGV 發(fā)送給賬戶守護(hù)程序并使其崩潰。
GNOME 漏洞
GNOME 顯示管理器(gdm3)是 Ubuntu 用戶界面的一個(gè)基本組件。它負(fù)責(zé)處理諸如在用戶登錄和退出時(shí)啟動(dòng)和停止用戶會(huì)話等事宜,還負(fù)責(zé)管理登錄屏幕。
gdm3 處理的另一件事是新電腦的初始設(shè)置。當(dāng)你在新電腦上安裝 Ubuntu 時(shí),首先需要做的事情之一就是創(chuàng)建一個(gè)用戶賬戶。初始用戶賬戶需要設(shè)置一個(gè)管理員,這樣用戶才能繼續(xù)設(shè)置機(jī)器,做一些諸如配置 wifi 和安裝應(yīng)用程序的事情。下面是初始設(shè)置界面的截圖(取自漏洞視頻)。
gnome-initial-setup(初始設(shè)置)
截圖中看到的對(duì)話框是一個(gè)單獨(dú)的應(yīng)用程序,叫做 gnome-initial-setup。當(dāng)系統(tǒng)上的用戶賬戶為 0 時(shí),它就會(huì)被gdm3 觸發(fā),這也是新電腦初始設(shè)置時(shí)的情況。而 gdm3 恰好就是通過(guò)詢問(wèn) accounts-daemon 來(lái)檢查當(dāng)前機(jī)器的賬戶數(shù)量。因?yàn)樵谏弦粋€(gè)漏洞中導(dǎo)致 accounts-daemon 已經(jīng)崩潰,其用于查詢賬戶數(shù)量的 D-Bus 方法調(diào)用由于超時(shí)而失敗。所以現(xiàn)在 gdm3 認(rèn)為用戶賬戶為零,并啟動(dòng)了 gnome-initial-setup。
Backbouse 已經(jīng)在上個(gè)月將該漏洞報(bào)告提交給了 Ubuntu 和 GNOME 維護(hù)人員,目前官方已經(jīng)進(jìn)行了修復(fù)。使用 Ubuntu + GNOME 的用戶還請(qǐng)盡快安裝修復(fù)補(bǔ)丁。(沒(méi)有使用 GNOME 的用戶暫時(shí)不受影響)
本文轉(zhuǎn)自O(shè)SCHINA。
本文標(biāo)題:JetBrains 發(fā)布 Kotlin 桌面 UI 框架,共享 Android UI 代碼
本文地址:https://www.oschina.net/news/120434/jetbrains-jetpack-compose-for-desktop