Flatpak 1.12.0 自包含包系統發布

Flatpak 1.12 工具包的一個新的穩定分支已經發布,它提供了一個用於構建獨立包的系統,這些包不依賴於特定的Linux 發行版,並在一個特殊的容器中運行,該容器將應用程序與系統的其餘部分隔離。 為 Arch Linux、CentOS、Debian、Fedora、Gentoo、Mageia、Linux Mint、Alt Linux 和 Ubuntu 提供了對執行 Flatpak 軟體包的支援。 Flatpak 軟體套件包含在 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、Android Studio 等建構的。

為了減少套件大小,它僅包含應用程式特定的依賴項,基本系統和圖形庫(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。

為了實現隔離,基於 cgroup、命名空間、Seccomp 和 SELinux,使用了 Bubblewrap 圖層和傳統的 Linux 容器虛擬化技術。 PulseAudio用於輸出聲音。 在這種情況下,可以停用隔離,許多流行軟體包的開發人員都使用隔離來獲得對檔案系統和系統中所有裝置的完全存取權。 例如,GIMP、VSCodium、PyCharm、Octave、Inkscape、Audacity 和 VLC 都帶有有限的隔離模式,保留對主目錄的完全存取權。

如果有權存取主目錄的軟體包受到損害,儘管軟體包描述中存在「沙盒」標籤,攻擊者只需更改 ~/.bashrc 檔案即可執行其程式碼。 另一個問題是對套件變更的控制以及對套件建構者的信任,這些建構者通常與主項目或發行版無關。

來源: opennet.ru

添加評論