2009-03-30 10 views
4

CLRがバッファオーバーフロー攻撃を防御するため、.Netプラットフォームがより安全であると言えるでしょうか?C#/ .Net Webブラウザは悪用される可能性がありますか?

管理対象OS(Cosmos,またはSingularityなど)で実行されているWebブラウザがあると仮定すると、攻撃者がアプリケーションにILコードを挿入することは技術的に可能でしょうか?

アンマネージドアプリケーションでは不可能な攻撃について心配する必要はありますか?

答えて

7

ほとんどの場合、あなたは正しいです。安全なタイプのシステム(.NETやJavaだけではない)を持つアプリケーションは、アプリケーションがそれらの制約に違反することを許しません。

これらの言語とランタイムの制約がチェックを提供せず、プログラムがメモリ内の任意のコードを実行するようなことをしないため、バッファオーバーフローや他の多くのリモートコードエクスプロイトが発生します。安全なシステムは、コードがそれらの影響から解放されることを確認します。

(注意点として、C#はまだ危険なアクションを実行し、任意のコードを実行するために自分自身を設定することができます。それだけでかなり面倒と実際のアプリケーションで使用される可能性は低いです。)

あなたが見ることがセキュリティホール管理されたブラウザでは、安全な環境としてCLRを使用して、任意のコードをロードできるかどうかです。 CLRで生成されたコード(つまり、アプリケーションのJIT)は安全ですが、ローダーと検証プログラム自体は通常、より低い言語で書かれています。悪意を持って作成されたアセンブリが実際のCLRに任意のコードを実行させるようなセキュリティホールがいくつかありました。しかし、これらは比較的まれな問題であり、表面積は他の方法よりはるかに小さい。

はい、完全に安全な管理されたブラウザ自体は、特定の悪用に惑わされることはありません。しかし、それはあなたのプラグインを同様の方法で書いて実行させる必要があることを意味します(Flash?)。最後に、ターゲットとすることができる他のセキュリティホールがありますが、通常、アンマネージドアプリケーションよりも厳しいものになります。たとえば、クロスサイトスクリプティングは引き続き問題になります。しかし、少なくともあなたは "文書が任意のコードを実行することができます"タイプの問題を表示する必要はありません。

2

CLR(およびJVM)は多くの一般的な攻撃に対して防御しますが、すべての脅威を排除するわけではありません。 CLRまたは任意のライブラリには、悪用を許すバグが含まれている可能性があります。アプリケーションのエラーによっても悪用される可能性があります。 SQLインジェクションは、アプリケーションでの入力検証の不足のために可能な攻撃の一例です。

関連する問題