2010-11-19 12 views
2

Cで書かれたさまざまなライブラリを使用するPDFビューアを作成します。このCコードは、潜在的に簡単に活用できます。チェックするラインが多すぎます。私は、このコードに悪用可能なバグが含まれていると推測しなければならないでしょう。爆弾防止ワーカープロセスの作成(窓口)

Cコードはかなり簡単です。一方の端にはバイトのストリームが入り、もう一方の端にはビットマップ(バイトのストリーム)が出ます。

Google Chromeに触発されて、デコードとページのレンダリングを行う別のプロセスを作成することを考えています。理想的には、これは、1つの入力ストリームを読み込み、もう一方の端でバイトストリーム(一部の未コンパイルビットマップ)に出力すること以外は何もする権利が全くないプロセスで実行する必要があります。私は、プロセスを行うことができないようにする必要がありだと思う何

は次のとおりです。

  • 任意のディスクアクセス
  • オープンソケット
  • メモリ使用の制限された量
  • アクセス、共有メモリ、他のプロセスとの
  • 他のDLLをロード
  • ...他に何か?

これは可能ですか?これはどこかに記述されていますか?

+0

[Windowsプラットフォーム向けに軽量でプログラム可能なSandbox APIはありますか?](http://stackoverflow.com/questions/2016731/is-there-a-lightweight-programmable-sandbox-api-for- the-windows-platform) –

答えて

1

ソースコードをお持ちの場合は、記載されていることを確認できます。 利用可能なメモリを制限するのはちょっと難しいです。ただし、SetProcessWorkingSetSizeを使用することができます。

また、実行可能ファイルをビルドした後で、DLLインポートテーブル(依存関係ウォーカーによって)がファイル/ソケット機能にアクセスしていないことを確認することができます。

+0

私が話していることは、悪用コードができるようにしたくないことです。私は実行可能時に彼らのアドレスを照会することによって、dllの可視からプロセスまで関数を実行することはまだ可能だと思います。私は、OSレベルで防衛のラインを探しています。 –

+0

でもね、とにかくブレインストーミングに参加してくれてありがとう。 –

+0

また、コードが 'LoadLibraryX'と' GetProcAddress'をインポートしていないことを確認することもできます。したがって、コードはおそらく他のソケット/ファイル関数を使用することはできません。実行中にマップされたメモリkernel32.dllをスキャンし、必要な関数をそのエクスポートテーブルに置くことが実際には難しい**エクスポレーションされたコードでない限り。 – valdo

1

これは実際には不可能です。最終的に潜在的な悪用コードは、このプロセスが実行される特権に関係なく実行されます。標準ユーザーとして実行すると、実行可能なダメージが制限されますが、可能な限りコードを修正するのが最善の方法です。

+0

私は、この悪用がプロセスの特権に限定されていることに同意します。そのため、これらの権限を最小限に抑えることが考えられます。 –

+0

新しいグループ/ユーザーを作成し、ローカルセキュリティポリシーを使用して厳重に制限することができますが、これは小さなPDFビューアでは極端に見えます。 – Luke

関連する問題