7

私は現在、学士論文のために非常にモジュール化されたプラグインベースのフレームワークに取り組んでいます。主なアイデアは、アプリケーション構造内に、特別なインターフェイスに準拠するコンパイル済みプラグイン (例: -files)pluginsをドロップできる名前のフォルダーがあることです。アプリケーションは、ユーザーが選択したプラグインを使用してタスクを実行します。したがって、PDF ファイルで 1 回タスクを実行したい場合は、 を選択し、Word ドキュメントで 1 回実行するには、 を選択します。.dllIPluginPdfPluginDocPlugin

出力もインターフェイスで定義されるため、すべてのプラグインが同じデータ構造を返します。ただ実際の作業はライブラリごとに異なります。

さて、アプリケーションはインターフェイスで定義されたメソッドなどを呼び出すだけParseDocument()なので、(サードパーティによって開発された可能性がある) プラグインが有害なコードを実行するのを防ぐにはどうすればよいでしょうか?

私は .NET3.5 (おそらく 4 に切り替えますが、まだ決定されていません) と C# に取り組んでいます。

4

3 に答える 3

8

私は.NET3.5に取り組んでいます

その場合、プラグインを分離して別のAppDomainで実行し、コード アクセス セキュリティを使用して、アプリ ドメインのアクセス許可セットを制限します。これにより、プラグイン アセンブリが「サンドボックス化」されます。

たとえば、アンマネージ コードのアクセス許可とファイル IO アクセス許可をすべて削除すると、プラグインはファイル システムに書き込むことができなくなります。

これは気弱な人向けではありません。AppDomains は扱いが難しく、シリアライゼーションやオブジェクトの有効期間ポリシーなどが必要になる場合があります。

于 2012-07-06T14:08:07.133 に答える
0

この分野でかなりの研究が行われていることを私は知っています。有効なアプローチの 1 つは、IL コードを調べて、禁止されているメソッド シグネチャを探すことです。次に、プラグイン vom がさらにコードを実行するのを停止するエラー フックにそれらをリダイレクトできます。

アプリケーションの 1 つは、スマートフォンのセキュリティ強化です。たとえば、ダウンロードしたアプリの IL コードを検査して、GPS モジュール、カメラ、マイクなどへのアクセス方法を調べます。セキュリティ アプリケーションは、これらのアクセス方法にパッチを適用し、ユーザーにアプリケーションがマイクを有効にすることを本当に許可する必要があります。

.NET では、Mono.Cecil などの IL リーダーを使用して、IL コードに有害な署名がないかどうかを調べることができます。ただし、コードを動的に生成したり、単にコードをリソースとして保存してリソースから実行時にロードしたりできるため、これを回避する方法は常にあります。概念実証の場合、このアプローチは非常に簡単です。

FXCop ルールを作成し、これを使用してプラグインで禁止されているメソッド呼び出しを静的にチェックすることもできます。

于 2012-07-06T14:11:36.880 に答える
-2

できません。

DLL は、呼び出しプログラムの特権で実行されるバイナリ コードです。DLL からのメソッドが呼び出されると、それが何をするかを制御することはできません。

プラグインができることを制限したい場合は、実行をメイン プログラムに移動する必要があります。これを行う良い方法は、バイナリ ライブラリではなく、プログラムによって解析および実行されるスクリプト言語でプラグインを実装することです。

于 2012-07-06T14:13:31.817 に答える