Drop: gVisor対応のルートレスLinuxサンドボックス

DropはLinuxアプリケーションのルートレス隔離を提供

Dropは、ユーザーが既存の作業環境から離れることなく、プログラムやAIコーディングエージェントを隔離するためのLinuxサンドボックスツールです。従来のコンテナとは異なり、Dropはホストの既存ディストリビューションを利用しているため、事前にインストールされたすべてのプログラムがコンテナイメージのセットアップなしにサンドボックス内で利用可能です。

コアアーキテクチャとセキュリティモデル

DropはLinuxユーザー名前空間を利用して一時的で隔離された環境を作成します。以下の基本的なプリミティブに基づいたセキュリティモデルを実装しています:

  • 名前空間の隔離: Dropはプロセス、マウント、ネットワーク、IPC、cgroupの名前空間を別々に作成します。これにより、サンドボックス化されたプロセスはホストから分離された独自のプロセスツリーとネットワークスタックを持つようになります。
  • ルートレス実行: このツールは実行にroot権限を必要としません。サンドボックス化されたプログラムを実行する前に、すべてのユーザー名前空間の能力をドロップするため、バインドマウントなどの特権操作を実行できなくなります。
  • ファイルシステム仮想化: 各環境には独自の書き込み可能で永続的なホームディレクトリが割り当てられます。デフォルトでは元のホストのホームディレクトリは非表示になり、サンドボックス化されたプロセスがSSHキーなどの機密ファイルにアクセスできないようにします。
  • gVisorの統合: より高いセキュリティ要件に対して、DropはgVisorユーザースペースカーネルをサポートしています。これにより、サンドボックス化されたアプリケーションとホストカーネルとの間に追加の絶縁層が設けられ、カーネルエクスプロイトの攻撃面積が小さくなります。

主な用途

Dropは、特に高リスクの2つのシナリオに最適化されています:

  1. コーディングエージェントの隔離: AIエージェントは --dangerously-skip-permissions フラグで実行できます。これによりDropがOSレベルで権限を強制的に適用し、誤ったコマンド(例:rm -rf ~)やプロンプトインジェクションが実際のホストホームディレクトリやローカルサービスに影響を与えるのを防ぎます。
  2. サードパーティプログラムの隔離: PyPIやnpmなどのパッケージマネージャー経由でインストールされたプログラムはDrop内で実行することで、サプライチェーン攻撃や悪意のあるパッケージによる損害を制限できます。

設定とワークフロー

Dropは、サンドボックスにどのファイル、ディレクトリ、ローカルネットワークサービスを公開するかを定義するために高レベルなTOML設定言語を使用します。ワークフローを簡素化するために、Dropは環境間で共有されるベース設定を実装しており、ユーザーが繰り返しの設定作業なしに新しい隔離空間を作成できるようにしています。

コミュニティの意見と比較

Hacker Newsコミュニティのユーザーおよび開発者は、Dropを他の隔離ツールと比較し、いくつかのトレードオフを指摘しています:

  • Bubblewrap (bwrap)との比較: 両方とも名前空間を使用していますが、DropはPythonの virtualenv に似たより構造化された環境管理システムとオプションのgVisorサポートを提供する一方、bwrap はしばしば手動で行われる一時的な設定に使われます。
  • コンテナ(Docker/Podman)との比較: ユーザーは、Dropの標準コンテナに対する主な利点はイメージ管理のオーバーヘッドがないことだと指摘しています。Dropはホストの既存バイナリとライブラリを使用するためです。
  • 現在の制約: 早期の採用者たちは、ハードウェアアクセラレーション(例:ゲーム)を伴うGUIアプリケーションの開発における課題や、サンドボックス内で docker-compose を必要とするコンテナ化アプリケーションの管理に関する課題を特定しています。

"これまで非常に満足しています…便利さと隔離のバランスをうまく捉えていると思います。今後は開発のデフォルトとして使うことができるようになりたいと思っています。"

"これは間違いなく試してみるつもりです。なぜ大手AI企業がこの問題を解決しようとしていないのか、私には理解できません。彼らのハーネス内に不透明なルールでしか対処されていないからです。"

Sources

関連

  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch
  • プロジェクト