ゼロデイアタック ネットワーク、ホストの防御

/ .trash / Comment[0]

ネットワークの防御

ファイアウォールはネットワークに出入りするトラフィックを制限する
多くのファイアウォールにはトラフィックをアプリケーションレベルで検査する機能は無い。そのようなファイアウォールは、アクセスを許可しているポートへのゼロデイアタックは防御できない。

侵入検知システム(IDS)は、アタック自体を防止するものではない。単に侵入された事実を発見するためのもの。動作はネットワーク上を流れるトラフィックを監視し、トラフィックパターンを定義データベースのアタックのルール、シグネチャと一致する、または怪しい動きをするパターンを検知するとアラートを発する。

侵入防止システム(IPS)はアタックを検知し、阻止するシステム。


ホストの防御
ゼロデイアタックを阻止する目的ではネットワークの防御よりも効果的なことが多い。
ファイアウォールとIDSはネットワークレベルばかりでなく個々のホストごとにも設置することができる。
ホスト方IDSは新しいアタックを検知する上でネットワークベースのIDSよりも効果を発揮することがある点が特徴。しかし、ホストIDSはアタックを防止することは出来ないので、ゼロデイ問題を解決するソリューションにはならない。

メモリ保護
ゼロデイアタックに対する防御として有力な技術的対策の一つがメモリ保護。

スタックへの「カナリア挿入」
あるカナリアと呼ばれる特定ワード値をサブルーチン呼び出しの度にスタックに積んでおき、サブルーチンから制御が戻ってきたときにこのカナリアの値が変更されていないことを確認する方法。
スタックオーバフローを利用するアタックはスタック上の関数などスタックの値を上書きして送り込んだコードを実行する形式のため、これに伴ってカナリアの値も変更されてしまうのでこの種のアタック見地の有効な手段。

スタック上でのコード実行禁止
スタック上のバッファオーバーフローを理容するアタックは一般的にスタック上にコードを挿入し、その挿入コードを実行することによってターゲットシステムへ忍び込む。スタック上でのコード実行が必要なプログラムはほとんどないのでスタック上のコード実行を禁止してしまえばこの種のアタックはまず成立しなくなる。

メモリのランダムな割り当て
システムへの新入コードの多くは脆弱なプログラム中の特定コードがメモリ上の特定アドレスに必ずあることを前提にして作られている。このため、特殊なコンパイラやプログラムローダを使うことでプログラムがロードされるアドレスをランダムに出来ればこの手の侵入コードによる侵入は防げる。

サンドボックス方式
ゼロデイアタックからシステムを防御する別のアプローチもある。それは、必要最小限のことしかできないサンドボックスの中でプログラムを実行するというアプローチ。Unix系OSではchrootで利用する。
サンドボックスはソフトウェアによって論理的に構築されているものなので完璧とは言えない。
Unix系OSでのchroot環境によるサンドボックスにおいてroot権限でプログラムが実行されている場合、chroot環境から抜け出すことが可能。

ACL機能
ACL(アクセス制御リスト)と呼ばれる機能がシステムに備わっている場合、これを利用することで細かくチューニングされたサンドボックスを作り上げることができる。もっとも単純な形でのACL機能は、およそありとあらゆるマルチユーザOSに用意されているもので、あるユーザファイルやリソースを許可されていない他のユーザのアクセスから守るというもの。
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可