明らかにされた 実装が提案されています A FreeBSDのアプリケーション分離メカニズム、これは、OpenBSDプロジェクトによって開発されたフォールドアンドアンベールシステムコールを彷彿とさせます。
plegdeでの分離は、アプリケーションで使用されていないシステムコールへのアクセスを禁止し、アプリケーションが処理できる特定のファイルパスへのアクセスのみを選択的に開くことで開示することによって行われます。 アプリケーションの場合、システムコールとファイルパスの一種のホワイトリストが作成され、他のすべてのコールとパスは禁止されます。
折りたたまれたものと公開されたものの違い、FreeBSD用に開発されました、それは余分な層を提供することに要約されます これにより、コードを変更せずに、または最小限の変更でアプリケーションを分離できます。 OpenBSDでは、plegdeとunlockは基本環境との緊密な統合を目指しており、各アプリケーションのコードに特別な注釈を追加することで実装されていることを忘れないでください。
保護の編成を簡素化するために、フィルターを使用すると、個々のシステムコールのレベルで詳細を回避し、システムコールのクラス(入力/出力、ファイル読み取り、ファイル書き込み、ソケット、ioctl、sysctl、プロセスの開始など)を操作できます。 。 アクセス制限機能は、特定のアクションが実行されるときにアプリケーションコードで呼び出すことができます。たとえば、必要なファイルを開いてネットワーク接続を確立した後、ソケットとファイルへのアクセスを閉じることができます。
FreeBSDのフォールドアンドリビールポートの作者 任意のアプリケーションを分離する機能を提供することを目的としています。 別のファイルで定義されたルールをアプリケーションに適用できるカーテンユーティリティが提案されています。 提案された構成には、システムコールのクラスと特定のアプリケーション(サウンド、ネットワーク、ロギングなどで動作する)に固有の一般的なファイルパスを定義する基本設定のファイルと、アプリケーション固有のアクセスルールのファイルが含まれます。
カーテンユーティリティを使用して、ほとんどのユーティリティ、サーバープロセス、グラフィカルアプリケーション、さらには変更されていないデスクトップセッション全体を分離できます。 JailおよびCapsicumサブシステムによって提供される分離メカニズムとのカーテンの共有がサポートされています。
さらに ネストされた分離を整理することが可能です。 起動されたアプリケーションが親アプリケーションによって設定されたルールを継承すると、 それらを個別の制約で補足します。 一部のカーネル操作(デバッグツール、POSIX / SysV IPC、PTY)は、現在のプロセスまたは親プロセス以外のプロセスによって作成されたカーネルオブジェクトへのアクセスを防ぐバリアメカニズムによってさらに保護されます。
プロセスは、curtainctlを呼び出すことにより、独自の分離を構成できます。 または、OpenBSDと同様に、libcurtainライブラリによって提供されるplegde()およびunveil()関数を使用します。 sysctl'security.curtain.log_level'は、アプリケーションの実行中にロックを追跡するために提供されています。
X11およびWaylandプロトコルへのアクセスは、カーテンの開始時に「-X」/「-Y」および「-W」オプションを指定することで個別に有効になりますが、グラフィカルアプリケーションのサポートはまだ十分に安定しておらず、一連の未解決の問題があります(問題は主にX11を使用しているときに発生し、Waylandのサポートははるかに優れています)。 ユーザーは、ローカルルールファイル(〜/ .curtain.conf)を作成することにより、制限を追加できます。 例えば、
実装には、強制アクセス制御(MAC)用のmac_curtainカーネルモジュール、必要なドライバーとフィルターの実装を備えたFreeBSDカーネル用のパッチのセット、アプリケーションでplegdeと公開された関数を使用するためのlibcurtainライブラリ、ユーティリティカーテン、構成が含まれます。ファイル、一連のテスト、および一部のユーザースペースプログラムのパッチ(たとえば、$ TMPDIRを使用して一時ファイルの操作を統合するため)。 可能な限り、作成者はカーネルとアプリケーションにパッチを適用する必要がある変更の数を最小限に抑えるように努めます。
最後に あなたがそれについてもっと知りたいのなら、詳細を確認できます 次のリンクで。