パスワードを忘れた? アカウント作成
771451 submission
セキュリティ

Linuxカーネルに新たなセキュリティ機構「exec-shield」

タレコミ by Anonymous Coward
あるAnonymous Coward 曰く、

exec-shieldのアナウンス文によるとLinux/x86向けにカーネル・ベースの新たなセキュリティ機構「exec-shield」のソースパッチが公開されました。(GPL/OSLのライセンスでの配布)
公開されいるパッチは、カーネルは2.4.21-rc1を対象にしていますが、他のバージョンの対応も簡単にできるのではないかと思われます。

<概略>
根本的な考え方として、スタック(メモリ―)だけでなく仮想メモリも含め幅広くチェック機能をカーネルレベルで実現しようというもののようです。効率を第一に考えられているようで、システム・コール(PROT_MMAP)ごとの監視のためのオーバーヘッド(2サイクル)、コンテキスト・スイッチングごとに 2, 3サイクルが消費されるという設計になっているようです。
また、あらゆるタイプの攻撃に対応しているものでは無いようなで、過信 は禁物でしょう。

<適用方法(日本語翻訳文から抜粋)>
カーネル・パッチを2.4.21-rc1カーネルに適用し、再コンパイル後、カーネルをインストールして再起動すれば 終わりである。起動時のカーネル・コマンド・ライン・オプションとして新たに exec-shield=が設けられた。 これはセキュリティ・レベルに応じて 次の4つの値を取る。

exec-shield=0 - 常に無効
exec-shield=1 - 明示的に有効にしたバイナリ以外はデフォルトで無効
exec-shield=2 - 明示的に無効にしたバイナリ以外はデフォルトで有効
exec-shield=3 - 常に有効

現在のパッチはexec-shield=2がデフォルトである。次のように して/procに値を書き込めば、実行時にセキュリティ・レベルを変更 することもできる。

echo 0 > /proc/sys/kernel/exec-shield

重要:セキュリティに関係のアプリケーションがexec-shieldが無効な 間に開始された場合は、実行可能なスタックを持つことになるので、 exec-shieldを再び有効にするときそれらを再起動する必要がある。

Solar Designerのchstk.cコードの修正版もアップロードした。 これにはELFフラグ「enable non-exec stack」の変更に必要が次のオプション が設けられている。

$ ./chstk
使用方法: ./chstk OPTION FILE...
バイナリのスタック領域の実行可能フラグを管理する

-e 実行パーミッションをオンにする
-E 非実行パーミッションをオンにする
-d 実行パーミッションをオフにする
-D 非実行パーミッションをオフにする
-v 現在のフラグの状態を表示する

つまり、2つの明確に区別されたフラグが存在する。1つは実行可能 なスタックを強制するもので、もう1つは実行可能でないスタックを 強制するものだ。両方のフラグがオフの場合はシステムのデフォルト が使われる。
したがって、exec-shieldのセキュリティ・レベルを1にしておき、 バイナリごとにnon-execスタックを有効にするようなことが可能である。 具体的には、起動時にexec-shield=1を指定し、各バイナリに対して 個別に次のコマンドを実行する。

./chstk -E /usr/sbin/sendmail

<アナウンス文>
http://people.redhat.com/mingo/exec-shield/ANNOUNCE-exec-shield
http://japan.linux.com/kernel/03/05/06/0414243.shtml?topic=1 ---  日本語翻訳文


<exec-shieldのパッチの公開先>
http://people.redhat.com/mingo/exec-shield/
typodupeerror

人生unstable -- あるハッカー

読み込み中...