web-dev-qa-db-ja.com

ソフトウェアセキュリティV.Sハードウェアセキュリティ

理論的には、完璧なソフトウェアアプリケーションは可能ですが、実際には存在しません。攻撃者がソフトウェアを知っている場合、ペイロードを送信して脆弱性を悪用し、リモートで必要な任意のコードを実行できます。一方、HSM(ハードウェアセキュリティモジュール)があります。たとえば、スマートカードをプログラムして、チップに物理的にアクセスすることなく攻撃のない基本的なコード(暗号アルゴリズムなど)を実行します。質問:

  • raspberrypi -のような安価なチップベースのシステムを使用して、悪意のあるコードを心配せずに複雑なコード(おそらく基本的なブラウザー)でメールをチェックすることはできますか?
  • コードをランダム化するコンパイラ(多分netbsdのブラウザ)を作成して、ユーザーごとにさまざまな方法で関数を実行し、攻撃者がパブリックコードの脆弱性を発見したときに、ランダムにコンパイルされたバージョンのユーザーを利用できないようにすることはできますか?
8
vulner

ハードウェアセキュリティモジュール

HSMやスマートカードなどの物理的に保護されたチップでコードを実行することは、ソフトウェアのバグから保護することではありません。 HSMにソフトウェアのバグがある場合、Webサーバー、ラップトップ、スマートフォンなど、何でも同様に悪用できます。 HSMとPCの違いは、PCに物理的にアクセスできるので、USBスティックから起動するか、ディスクを交換するだけです。 HSMの外部への物理的なアクセスでは、侵入する必要があります。HSMは、HSMを開こうとすると、真剣に破壊されるように設計されています。

Raspberry Piでブラウザーを実行する

PCは、Raspberry Piと同じくらい「チップベースのシステム」です。それらの間には基本的な違いはありません。RaspberryPiは、PCほど「安全」ではありません。

より多くの人々がPCを使用するので、PCは悪用するためのより価値のある標的なので、より多くの人々がPCを悪用しようとします。また、PCには、歴史的な互換性と多種多様なソフトウェアの重荷があり、それにより、PCはやや危険にさらされます。しかし、人々がPentiumの代わりにPisでブラウザを日常的に実行している場合、Pisのエクスプロイトはさらに増えるでしょう。

ブラウザを別のマシンに移動すると、ブラウザが分離されます。しかし、あなたは何を得るのですか?多くのエクスプロイトがブラウザを介して配信されます。多くの場合、ブラウザ自体がターゲットです。ネットワークにアクセスできるため、他のマシンに感染を拡大するための貴重な標的です。これは、ユーザーが多くのことを操作する方法であるため、泥棒や詐欺師の主要なターゲットです。ブラウザをどこに置いても、感染していれば負けてしまいます。

コードのランダム化

なんらかの方法でコードをランダム化することは防御手法ですが、エクスプロイトをより困難にするだけで、不可能にすることはありません。

たとえば、一部の最近のオペレーティングシステムでは アドレススペースレイアウトのランダム化 を実践しています。プログラムが起動するたびに、プログラムは別のランダムアドレスに読み込まれます。これは、元のプログラムのコードのアドレスを直接参照するなど、エクスプロイトでは実行できないことがあることを意味します。それはエクスプロイトを不可能にしない:プログラムがそれ自身の部分を見つけることができる方法がなければなりません(例えば、短い相対ジャンプはうまく機能し続けます)そして、いくつかの部分が見つけにくい場合、エクスプロイトがそれを検索できます(多くの場合、悪用コード自体が予測不可能なアドレスにロードされるため、ASLRがなくても一般的な問題です)。

コンパイラーでコードをランダム化しても、それほど多くは購入されず、コストもかかります。これらすべての形式のランダム化により、デバッグが困難になります。プログラムを配布する前にランダム化する場合は、これらすべての異なるバージョンの配布と保守(更新)を管理する必要があります。そして最終的にプログラムが同じことをしなければならないので、セキュリティ面でのメリットは最小限に抑えられます。

ハードウェアがセキュリティにどのように役立つか

通常のシステム(HSMなどではない)の場合、ハードウェアの役割はコンポーネント間の分離を強制することです。これはハードウェアコンポーネントである [〜#〜] mmu [〜#〜] であり、プログラムが別のプログラムのメモリに直接アクセスすることを不可能にします。 CPUの設計により、通常のプログラムがハードウェア周辺機器に直接アクセスすることも不可能になり、オペレーティングシステムのインターフェイスを経由する必要があります。ハードウェアは正しく使用する必要があります。MMUテーブルを正しく設定するかどうかなどは、オペレーティングシステム次第です。

ハードウェアにあまり多くのインテリジェンスを組み込むことはできません。作業が多ければ多いほど、設計にバグが発生するリスクが高くなります。ハードウェアのバグを修正するのはかなり困難です。したがって、ハードウェアはいくつかの基本的な機能を提供し、複雑さは可能な限りソフトウェアで処理されます。

@vulner、あなたは間接的にハーバードアーキテクチャが本質的にフォンノイマンアーキテクチャよりも安全かどうか尋ねようとしていると思います。 (ハーバードアーキテクチャには命令とデータ用に別々のメモリがありますが、フォンノイマンマシンは両方の目的で共有メモリを使用します。)

Harvardマシンの方が安全な攻撃の1つは、バッファオーバーランです。バッファオーバーランが原因で、アプリケーションがミスしてアプリケーションメモリを上書きしたとしても、アプリポインターがスタックメモリに物理的にアクセスできない場合があるため、従来のスタックスマッシング攻撃を実行することはできません。

しかし、Webで見つかるのはそれだけではありません。ブラウザのセキュリティの問題は、マシンのアーキテクチャだけにあるのではありません。問題は、ブラウジングアプリケーションが信頼できない情報、つまり解釈済みをデータと指示の両方として処理すること、およびブラウザーが状態を保持できることです。

右側の列に銀行の偽の広告のように見えるものを配置するスクリプト(ntrustworthyソース)をここでstackexchangeに投稿するとします。お使いのブラウザは、それが正当なデータであるかどうかはわかりませんが、銀行のユーザー名とパスワードを入力すると、すぐにわかります。

または、Cookie情報を盗むJavaScript(解釈済み指示)を検討してください。悪意のあるWiFiアクセスポイントを実行している場合、www.google.comホームページの下部にJavaScriptを挿入して、投稿したすべてのデータと受信したすべてのCookieを私に送信することができます。キャッシュ時間を変更して、「このページとスクリプトを1年間キャッシュに保持する」と言うことができます。 (stored state)そして、スクリプトは、キャッシュされたGoogleページを介してアクセスするすべての新しいページの下部に自分自身を追加する可能性があります。ブラウザのキャッシュをクリアするだけでそれを取り除くことができます。

チップベースのブラウザーは特定の種類の攻撃を阻止することができますが、他のすべての攻撃により、誤った安心感を与えることになります。

2
John Deters