誓約分離メカニズムをLinuxに移植する予定です

最近 コスモポリタンC標準ライブラリの作者 とRedbeanプラットフォームは 発表された、Linux用のpledge()分離メカニズムの実装。

だった もともとはOpenBSDプロジェクトによって開発されました y 選択的に禁止することができます その アプリケーションは未使用のシステムコールにアクセスします (アプリケーション用に一種のシステムコールのホワイトリストが作成され、他の呼び出しは禁止されています)。 Linuxで利用可能なseccompなどのsyscallアクセス制御メカニズムとは異なり、誓約メカニズムは、可能な限りユーザーフレンドリーになるようにゼロから設計されています。

systraceメカニズムを使用してOpenBSDベース環境でアプリケーションを分離するというイニシアチブの失敗は、個々のシステムコールのレベルでの分離が複雑すぎて時間がかかることを示しました。

別の方法として、誓約が提案されました。 詳細に立ち入ったり、準備されたアクセスクラスを操作したりせずに、分離ルールを作成できます.

たとえば、提供されるクラスは、stdio(入力/出力)、rpath(読み取り専用ファイル)、wpath(書き込みファイル)、cpath(ファイルの作成)、tmppath(一時ファイルの処理)、inet(ソケットネットワーク)、unix(unixソケット)です。 )、dns(DNS解決)、getpw(ユーザーデータベースへの読み取りアクセス)、ioctl(ioctl呼び出し)、proc(プロセス制御)、exec(起動プロセス)、およびid(許可制御)。

システムコールを操作するためのルール 許可されたシステムコールクラスのリストを含む注釈の形式で指定されます アクセスが許可されているファイルパスの配列。 変更されたアプリケーションをコンパイルして実行した後、カーネルは指定されたルールへの準拠を監視するジョブを引き継ぎます。

これとは別に、FreeBSDの誓約の実装が開発されています。これは、コードを変更せずにアプリケーションを分離する機能によって区別されます。一方、OpenBSDでは、誓約の呼び出しは、基本環境との緊密な統合とコードへの注釈の追加を目的としています。それぞれの。

誓約は、上司がLinuxのようなものを使うべきだと言ったときに私たち全員が切望する禁断の果実のようなものです。 なぜそれが重要なのですか? これは、pledge()が実際にセキュリティを理解できるようにするためです。 Linuxには、単なる人間が理解できるセキュリティの層が実際にあったことはありません。

Linuxの誓約ポートの開発者はFreeBSDからヒントを得ました また、コードを変更する代わりに、pledge.comから追加のユーティリティを用意しました。これにより、アプリケーションコードを変更せずに制限を適用できます。 たとえば、stdio、rpath、inet、およびthreadstdioシステムコールクラスにのみアクセスできるcurlユーティリティを実行するには、「。/ pledge.com -p'stdio rpath inet thread'curlhttp://example.com»」を実行するだけです。 。

このユーティリティは、RHEL6以降のすべてのLinuxディストリビューションで機能します ルートアクセスは必要ありません。 さらに、国際的なライブラリに基づいて、C言語プログラムのコードの制限を管理するためのAPIが提供されます。これにより、特に、アプリケーションの特定の機能に関連してアクセスを選択的に制限するエンクレーブを作成できます。

これを試した開発者は過去に数人います。 これらのプロジェクトのほとんどは完了していなかったため、名前を付けるつもりはありません。 SECOMPに関しては、オンラインチュートリアルではシステムコールをホワイトリストに登録する方法しか説明されていないため、ほとんどの人は引数をフィルタリングする方法を理解する前に興味を失います。 前進したプロジェクトには、setuid / setgid/stickyビットの変更を許可するなどの見落としもありました。 したがって、現在の代替手段は使用しないでください。 この取り組みにより、これまで以上にpledge()に近づくことができると思います。

実装にはカーネルの変更は必要ありません。ユーティリティの制約はSECCOMPBPFルールに変換され、Linuxのネイティブシステムコール分離メカニズムを使用して処理されます。 たとえば、promise( "stdio rpath"、0)を呼び出すと、BPFフィルターに変換されます

最後に、それについてもっと知りたい場合は、詳細を調べることができます 次のリンクで。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。