Flatpak 1.12.0 自己完結型パッケージ システムのリリース

Flatpak 1.12 ツールキットの新しい安定したブランチが公開されました。これは、特定の Linux ディストリビューションに関連付けられず、アプリケーションをシステムの残りの部分から分離する特別なコンテナーで実行される自己完結型パッケージを構築するためのシステムを提供します。 Flatpak パッケージの実行のサポートは、Arch Linux、CentOS、Debian、Fedora、Gentoo、Mageia、Linux Mint、Alt Linux、および Ubuntu に対して提供されます。 Flatpak パッケージは Fedora リポジトリに含まれており、ネイティブ GNOME アプリケーション マネージャーによってサポートされています。

Flatpak 1.12 ブランチの主な革新:

  • Steam ゲーム配信サービスのクライアントで flatpak パッケージで使用されるネストされたサンドボックス環境の管理が改善されました。ネストされたサンドボックスでは、/usr ディレクトリと /app ディレクトリの個別の階層の作成が許可されます。これは、Steam クライアントの環境から隔離された、独自の /usr パーティションを持つ別のコンテナでゲームを起動するために Steam で使用されます。
  • 同じアプリケーション識別子 (app-ID) を持つすべてのパッケージ インスタンスは、/tmp ディレクトリと $XDG_RUNTIME_DIR ディレクトリを共有します。オプションで、「--allow=per-app-dev-shm」フラグを使用すると、/dev/shm 共有ディレクトリの使用を有効にすることができます。
  • gdb などの Text User Interface (TUI) アプリケーションのサポートが強化されました。
  • 「ostree prune」コマンドの高速実装が build-update-repo ユーティリティに追加され、アーカイブ モードでリポジトリを操作するように最適化されました。
  • seccomp ルールでのパーティションのマウントに関連する新しいシステム コールがブロックされないことに関連する、ポータル メカニズムの実装における脆弱性 CVE-2021-41133 が修正されました。この脆弱性により、アプリケーションは入れ子になったサンドボックスを作成し、コンテナ外部のリソースへのアクセスを組織するために使用される「ポータル」検証メカニズムをバイパスすることができました。

    その結果、攻撃者はマウント関連のシステム コールを実行することにより、サンドボックス分離メカニズムをバイパスし、ホスト環境のコンテンツへの完全なアクセスを取得する可能性があります。この脆弱性は、Wayland、Pipewire、pipewire-pulse で使用されるものなど、アプリケーションに AF_UNIX ソケットへの直接アクセスを提供するパッケージでのみ悪用されます。リリース 1.12.0 では脆弱性が完全には解消されなかったため、更新 1.12.1 がすぐにリリースされました。

Flatpak を使用すると、アプリケーション開発者はディストリビューションごとに個別のアセンブリを作成せずに 0 つのユニバーサル コンテナを準備することで、標準のディストリビューション リポジトリに含まれていないプログラムのディストリビューションを簡素化できることを思い出してください。 セキュリティを重視するユーザー向けに、Flatpak を使用すると、コンテナ内で疑わしいアプリケーションを実行し、アプリケーションに関連付けられたネットワーク機能とユーザー ファイルへのアクセスのみを提供できます。 新製品に興味のあるユーザーは、Flatpak を使用すると、システムに変更を加えることなく、アプリケーションの最新のテスト リリースと安定リリースをインストールできます。 たとえば、Flatpak パッケージは、LibreOffice、Middle、GIMP、Inkscape、Kdenlive、Steam、XNUMX AD、Visual Studio Code、VLC、Slack、Skype、Telegram Desktop、Android Studio など用に構築されています。

パッケージ サイズを削減するために、アプリケーション固有の依存関係のみが含まれており、基本システムおよびグラフィック ライブラリ (GTK、Qt、GNOME、KDE ​​ライブラリなど) はプラグイン標準ランタイム環境として設計されています。 Flatpak と Snap の主な違いは、Snap はメイン システム環境のコンポーネントを使用し、フィルタリング システム コールに基づいて分離するのに対し、Flatpak はシステムとは別のコンテナを作成し、大規模なランタイム セットで動作し、パッケージを依存関係として提供するのではなく、標準で提供することです。システム環境 (たとえば、GNOME または KDE プログラムの動作に必要なすべてのライブラリ)。

特別なリポジトリを通じてインストールされる標準システム環境 (ランタイム) に加えて、アプリケーションの動作に必要な追加の依存関係 (バンドル) が提供されます。 ランタイムは個別にインストールされ、一度に複数のコンテナーに関連付けられますが、合計すると、ランタイムとバンドルによってコンテナーが満たされます。これにより、コンテナーに共通するシステム ファイルの重複を回避できます。 3.40 つのシステムに複数の異なるランタイム (GNOME、KDE) または同じランタイムの複数のバージョン (GNOME 3.42、GNOME XNUMX) をインストールすることができます。 依存関係としてアプリケーションを持つコンテナーは、ランタイムを構成する個々のパッケージを考慮せずに、特定のランタイムへのバインディングのみを使用します。 不足している要素はすべてアプリケーションに直接パッケージ化されます。 コンテナーが形成されると、ランタイム コンテンツは /usr パーティションとしてマウントされ、バンドルは /app ディレクトリにマウントされます。

ランタイム コンテナとアプリケーション コンテナは、OSTree テクノロジを使用して構築されます。OSTree テクノロジでは、イメージが Git のようなリポジトリからアトミックに更新されます。これにより、バージョン管理メソッドをディストリビューション コンポーネントに適用できます (たとえば、システムをすぐにロールバックできます)。以前の状態)。 RPM パッケージは、特別な rpm-ostree レイヤーを使用して OSTree リポジトリに変換されます。 作業環境内でのパッケージの個別のインストールと更新はサポートされていません。システムは個々のコンポーネントのレベルではなく、全体として更新され、その状態がアトミックに変更されます。 更新を段階的に適用するためのツールを提供し、更新のたびにイメージを完全に置き換える必要がなくなります。

生成された分離環境は、使用されるディストリビューションから完全に独立しており、パッケージが適切に設定されていれば、DRI 経由の出力を除き、ユーザーまたはメイン システムのファイルやプロセスにアクセスできず、機器に直接アクセスすることもできません。そしてネットワークサブシステムを呼び出します。 グラフィック出力と入力の構成は、Wayland プロトコルまたは X11 ソケット転送を使用して実装されます。 外部環境との対話は、DBus メッセージング システムと特別なポータル API に基づいています。

分離には、cgroup、名前空間、Seccomp、SELinux の使用に基づいて、Bubblewrap レイヤーと従来の Linux コンテナ仮想化テクノロジが使用されます。音の出力にはPulseAudioを使用します。この場合、分離を無効にすることができます。これは、多くの一般的なパッケージの開発者がファイル システムおよびシステム内のすべてのデバイスへの完全なアクセスを取得するために使用します。たとえば、GIMP、VSCodium、PyCharm、Octave、Inkscape、Audacity、および VLC には、ホーム ディレクトリへのフル アクセスを残す制限付き分離モードが付属しています。

ホーム ディレクトリにアクセスできるパッケージが侵害された場合、パッケージの説明に「サンドボックス」ラベルが存在するにもかかわらず、攻撃者は ~/.bashrc ファイルを変更するだけでコードを実行できます。別の問題は、パッケージへの変更の制御と、メインのプロジェクトやディストリビューションに関連付けられていないパッケージ ビルダーへの信頼です。

出所: オープンネット.ru

コメントを追加します