近日,GitHub 安全研究員 Kevin Backhouse 發現了 Ubuntu 20.04(一個長期支持版本)中的漏洞,該漏洞可以使任何桌面用戶無需系統密碼,即可添加新的 sudo 用戶,并獲得 root 訪問權限。
Backhouse 指出,利用該漏洞攻擊系統的方法非常簡單,只需要一些簡單的命令就能為自己創建一個管理員賬戶。“現代操作系統中的漏洞如此容易被利用是不尋常的。“Backhouse 還錄制了視頻詳細展示了自己如何利用這個漏洞對系統進行攻擊。
據悉,該漏洞利用了 Ubuntu 系統中的兩個錯誤。一個是管理計算機上用戶賬戶的服務 accountsservice,另一個是 GNOME 顯示管理器(gdm3) 的 BUG。
accountsservice 漏洞
accountservice 的守護進程 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 權限,轉而采用用戶的較低特權,然后將 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 框架,共享 Android UI 代碼
本文地址:https://www.oschina.net/news/120434/jetbrains-jetpack-compose-for-desktop