隔離された環境を作成するためのレイヤーである Bubblewrap 0.6 のリリース

隔離された環境の作業を整理するためのツール Bubblewrap 0.6 のリリースが利用可能です。通常、特権のないユーザーの個々のアプリケーションを制限するために使用されます。 実際には、Bubblewrap は、パッケージから起動されたアプリケーションを分離するためのレイヤーとして Flatpak プロジェクトによって使用されます。 プロジェクト コードは C で書かれており、LGPLv2+ ライセンスに基づいて配布されます。

分離には、cgroup、名前空間、Seccomp、SELinux の使用に基づいた、従来の Linux コンテナ仮想化テクノロジが使用されます。 特権操作を実行してコンテナを構成するには、Bubblewrap を root 権限 (suid フラグを持つ実行可能ファイル) で起動し、コンテナの初期化後に特権をリセットします。

名前空間システムでユーザー名前空間をアクティブ化すると、コンテナ内で独自の識別子のセットを使用できるようになりますが、多くのディストリビューションではデフォルトでは機能しないため、操作には必要ありません (Bubblewrap は、ユーザー名前空間機能のサブセット - 現在の ID を除くすべてのユーザー ID とプロセス ID を環境から除外するには、CLONE_NEWUSER モードと CLONE_NEWPID モードが使用されます。 保護を強化するために、Bubblewrap で実行されるプログラムは PR_SET_NO_NEW_PRIVS モードで起動されます。これにより、たとえば setuid フラグが存在する場合、新しい権限の取得が禁止されます。

ファイル システム レベルでの分離は、デフォルトで新しいマウント名前空間を作成することによって実現されます。この名前空間には、tmpfs を使用して空のルート パーティションが作成されます。 必要に応じて、外部 FS パーティションが「mount —bind」モードでこのパーティションに接続されます (たとえば、「bwrap —ro-bind /usr /usr」オプションを使用して起動すると、/usr パーティションがメイン システムから転送されます)読み取り専用モードで)。 ネットワーク機能は、CLONE_NEWNET および CLONE_NEWUTS フラグを介したネットワーク スタック分離によるループバック インターフェイスへのアクセスに制限されます。

同じく setuid 起動モデルを使用する類似の Firejail プロジェクトとの主な違いは、Bubblewrap ではコンテナ作成レイヤーに必要な最小限の機能のみが含まれており、グラフィカル アプリケーションの実行、デスクトップとの対話、リクエストのフィルタリングに必要なすべての高度な機能が含まれていることです。 Pulseaudio に送信され、Flatpak 側に転送され、権限がリセットされた後に実行されます。 一方、Firejail は、関連するすべての機能を XNUMX つの実行可能ファイルに結合しているため、適切なレベルでのセキュリティの監査と維持が困難になります。

新しいリリースでは:

  • Meson アセンブリ システムのサポートが追加されました。 Autotools を使用したビルドのサポートは今のところ維持されていますが、将来のリリースでは削除される予定です。
  • 複数の seccomp プログラムを追加するための「--add-seccomp」オプションを実装しました。 「--seccomp」オプションを再度指定すると、最後のパラメータのみが適用されるという警告を追加しました。
  • git リポジトリの master ブランチの名前が main に変更されました。
  • ライセンスと著作権情報を指定するプロセスを統合する REUSE 仕様の部分的なサポートが追加されました。 多くのコード ファイルには SPDX-License-Identifier ヘッダーが追加されています。 REUSE ガイドラインに従うと、どのライセンスがアプリケーション コードのどの部分に適用されるかを自動的に判断することが容易になります。
  • コマンドライン引数カウンター (argc) の値のチェックを追加し、カウンターがゼロの場合の緊急出口を実装しました。 この変更は、Polkit の CVE-2021-4034 など、渡されたコマンド ライン引数の不適切な処理によって引き起こされるセキュリティ問題をブロックするのに役立ちます。

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

コメントを追加します