Flatpak 1.12 的新穩定分支已經發布,它提供了一個用於構建不依賴特定發行版的獨立軟體包的系統。 Linux 它在一個特殊的容器中運行,該容器將應用程式與系統的其他部分隔離。 Arch Linux 支援運行 Flatpak 軟體包。 Linux, CentOS, DebianFedora、Gentoo、Mageia Linux 薄荷綠,另類 Linux и UbuntuFlatpak 軟體套件包含在 Fedora 軟體倉庫中,並由標準 GNOME 應用程式管理員支援。
Flatpak 1.12 分支的主要創新:
- 改進了對 Flatpak 包中使用的嵌套沙盒環境的管理以及 Steam 遊戲交付服務的用戶端。 在嵌套沙箱中,允許創建 /usr 和 /app 目錄的單獨層次結構,這在 Steam 中用於在具有自己的 /usr 分區的單獨容器中啟動遊戲,與 Steam 用戶端的環境隔離。
- 具有相同應用程式識別碼 (app-ID) 的所有套件實例共用 /tmp 和 $XDG_RUNTIME_DIR 目錄。 (可選)使用“--allow=per-app-dev-shm”標誌,您可以啟用 /dev/shm 共享目錄。
- 改進了對文字使用者介面 (TUI) 應用程式(例如 gdb)的支援。
- build-update-repo 實用程式中新增了「ostree prune」命令的更快實現,並針對在存檔模式下使用儲存庫進行了最佳化。
- 門戶機制實作中的漏洞 CVE-2021-41133 與 seccomp 規則中與掛載分割區相關的新系統呼叫缺乏阻止相關,現已修復。 此漏洞允許應用程式建立嵌套沙箱,以繞過用於組織對容器外部資源的存取的「入口網站」驗證機制。
因此,攻擊者透過執行與掛載相關的系統調用,可以繞過沙箱隔離機制並獲得對主機環境內容的完全存取權限。 該漏洞只能在為應用程式提供直接存取 AF_UNIX 套接字的軟體包中被利用,例如 Wayland、Pipewire 和 pipeline-pulse 使用的軟體包。 在版本 1.12.0 中,漏洞並未完全消除,因此更新 1.12.1 緊接著發布。
提醒一下,Flatpak 允許應用程式開發者簡化其程式的分發,這些程式並未包含在標準分發倉庫中。 Flatpak 透過創建一個通用的容器,無需為每個分發版本單獨構建,即可將程式打包成單一的容器。對於注重安全的用戶,Flatpak 允許他們在容器中運行一些安全隱患的應用程序,並僅授予其存取網路功能和與該應用程式關聯的用戶檔案的權限。對於關注新版本的用戶,Flatpak 允許他們在不更改系統的情況下安裝應用程式的最新測試版和穩定版。例如,LibreOffice、Midori、GIMP、Inkscape、Kdenlive、Steam、0 AD、Visual Studio Code、VLC、Slack、Skype 和 Telegram Desktop 等軟體都已建置成 Flatpak 軟體包。 Android 工作室等。
為了減少套件大小,它僅包含應用程式特定的依賴項,基本系統和圖形庫(GTK、Qt、GNOME 和 KDE 庫等)被設計為插件標準運行時環境。 Flatpak 和Snap 之間的主要區別在於,Snap 使用主系統環境的元件並基於過濾系統呼叫進行隔離,而Flatpak 創建一個與系統分離的容器並使用大型運行時集進行操作,提供的不是套件作為依賴項,而是標準一個系統環境(例如,執行 GNOME 或 KDE 程式所需的所有函式庫)。
除了透過特殊儲存庫安裝的標準系統環境(運行時)之外,還提供應用程式運行所需的附加相依性(捆綁包)。 總的來說,運行時和捆綁包構成了容器的填充,儘管運行時是單獨安裝的並同時綁定到多個容器,這使您可以避免重複容器常見的系統檔案。 一個系統可以安裝多個不同的運行時(GNOME、KDE)或同一運行時的多個版本(GNOME 3.40、GNOME 3.42)。 以應用程式作為依賴項的容器僅使用與特定運行時的綁定,而不考慮構成運行時的各個套件。 所有缺少的元素都直接與應用程式打包在一起。 當容器形成時,執行時間內容將安裝為 /usr 分割區,而捆綁包將安裝在 /app 目錄中。
運行時和應用程式容器是使用 OSTree 技術建立的,其中映像從類似 Git 的儲存庫自動更新,這允許將版本控制方法應用於分發元件(例如,您可以將系統快速回滾到先前的狀態)。 RPM 套件使用特殊的 rpm-ostree 層轉換到 OSTree 儲存庫。 不支援在工作環境中單獨安裝和更新軟體包;系統的更新不是在單一元件的級別,而是作為一個整體,原子地改變其狀態。 提供增量應用更新的工具,無需每次更新都完全替換映像。
產生的隔離環境完全獨立於所使用的發行版,並且在包的正確設定下,無法存取用戶或主系統的檔案和進程,無法直接存取設備,除了透過DRI輸出之外,以及對網路子系統的調用。 圖形輸出和輸入組織是使用 Wayland 協定或透過 X11 套接字轉送來實現的。 與外部環境的互動是基於 DBus 訊息系統和特殊的 Portals API。
為了隔熱,可以使用氣泡膜層和傳統方法 Linux 基於 cgroups、命名空間、Seccomp 和 SE 的容器虛擬化技術LinuxPulseAudio 用於音訊輸出。隔離功能可以停用,許多流行軟體包的開發者會利用此功能來獲得對檔案系統和系統內所有裝置的完全存取權。例如,GIMP、VSCodium、PyCharm、Octave、Inkscape、Audacity 和 VLC 等軟體包都帶有有限的隔離模式,允許完全存取使用者主目錄。
如果有權存取主目錄的軟體包受到損害,儘管軟體包描述中存在「沙盒」標籤,攻擊者只需更改 ~/.bashrc 檔案即可執行其程式碼。 另一個問題是對套件變更的控制以及對套件建構者的信任,這些建構者通常與主項目或發行版無關。
來源: opennet.ru
