Security Tips
 

Solarisのスタック実行制御機能でオーバーフローを防ぐ

たかはしもとのぶ
2004/7/21

 近々リリース予定のWindows XP SP2では、新機能としてDEP(Data Execute Prevention:データ実行防止)の実装が声高に宣伝されており、スタック領域のデータを「実行」することができなくなる。これによりバッファオーバーフローによる攻撃が非常に困難となるため、セキュリティの大幅な向上が期待できる。ただし、64bitプロセッサでないと、この機能は有効にならない(注)。

【注】
詳細は「Windows XP Service Pack 2 セキュリティ強化機能搭載」の機能の変更点などを参照してほしい。
http://www.microsoft.com/japan/technet/prodtechnol/
winxppro/maintain/sp2chngs.mspx

 Solarisでも64bitアプリケーション(SPARC、AMD)においては、スタック領域のデータを「実行」することが禁止されている。SPARC版Solarisについては、32bitのアプリケーションにおいても、Solaris 2.6のころからこの機能が備えられている(厳密にはsun4m/sun4uアーキテクチャのマシンに限られる。残念ながらIntel版の32bitマシンにこの機能はない)。

 ただし、この機能はデフォルトでは無効になっている。この機能を有効にするには、/etc/systemファイルに

set noexec_user_stack = 1

という記述を追加して、再起動する必要がある。同様にスタック上のコードが実行されようとした際にメッセージを記録するためには

set noexec_user_stack_log = 1

という記述を追加して再起動する。このパラメータに関する詳細はSunの技術文書を参照してほしい。

Security Tips Index



Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間