前幾天有消息稱 發現了一些漏洞 在 swhkd (Simple Wayland HotKey Daemon) 中,由於臨時文件、命令行選項和 unix 套接字處理不正確而導致。
該程序是用 Rust 編寫的,並在基於 Wayland 協議(在基於 X11 的環境中使用的 sxhkd 進程的配置文件兼容模擬)的環境中處理熱鍵。 該軟件包包括一個非特權 swhks 進程,該進程執行熱鍵操作,以及一個 swhkd 後台進程,該進程以 root 身份運行並在 uinput API 級別與輸入設備進行交互。 為了組織 swhks 和 swhkd 之間的交互,使用了 Unix 套接字。
Polkit 的規則允許任何本地用戶以 root 身份運行 /usr/bin/swhkd 進程並向其傳遞任意參數。
RPM包的集成 為 openSUSE Tumbleweed 提交的文件中包含不尋常的 Polkit 規則 需要 SUSE 安全團隊審查的定義文件。
作為審查的結果,發現了多個安全問題。 個別問題在下面的詳細報告中進行了描述。
的 已識別的漏洞, 提到以下內容:
CVE-2022,27815
這個漏洞 允許將進程 PID 保存在具有可預測名稱的文件中 並且在其他用戶的可寫目錄(/tmp/swhkd.pid)中,任何用戶都可以創建一個/tmp/swhkd.pid文件並將現有進程的pid放入其中,這將導致無法啟動swhkd。
在沒有防止在 /tmp 中創建符號鏈接的情況下, 該漏洞可用於創建或覆蓋文件 在系統上的任何目錄中(PID寫入文件)或確定係統上任何文件的內容(swhkd將PID文件的全部內容輸出到stdout)。 需要注意的是,在發布的修復中,PID文件沒有移動到/run目錄,而是移動到/etc目錄(/etc/swhkd/runtime/swhkd_{uid}.pid),它也不屬於.
CVE-2022,27814
這個漏洞 允許您操縱“-c”命令行選項來指定配置文件 可以確定係統上是否存在任何文件。
與第一個漏洞一樣,修復問題令人費解:修復問題歸結為外部“cat”實用程序 ('Command::new("/bin/cat").arg(path) 是現在啟動以讀取配置文件。輸出()')。
CVE-2022,27819
這個問題 它也與“-c”選項的使用有關,它加載並解析整個配置文件,而不檢查文件的大小和類型。
例如,由於可用內存不足和創建雜散 I/O 導致拒絕服務,您可以在啟動時指定塊設備(“pkexec /usr/bin/swhkd -d -c /dev/sda »)或發出無限數據流的字符設備。
該問題已通過在打開文件之前重置權限得到解決,但解決方案並不完整,因為僅重置了用戶 ID (UID),但組 ID (GID) 保持不變。
CVE-2022,27818
這個漏洞 允許您使用 /tmp/swhkd.sock 文件來創建 Unix 套接字,它是在公共可寫目錄中創建的,導致與第一個漏洞類似的問題(任何用戶都可以創建 /tmp/swhkd.sock 並生成或攔截按鍵事件)。
CVE-2022,27817
在這個漏洞中, 從所有設備和所有會話中接收輸入事件,即另一個 Wayland 或控制台會話中的用戶可以在其他用戶按下熱鍵時攔截事件。
CVE-2022,27816
swhks 進程與 swhkd 一樣,使用可公開寫入的 /tmp 目錄中的 PID 文件 /tmp/swhks.pid。 該問題類似於第一個漏洞,但沒有那麼危險,因為 swhks 在非特權用戶下運行。
最後,如果您有興趣了解更多,可以諮詢 以下鏈接中的詳細信息.