Exec Shield

Exec Shield: Linuxシステムのセキュリティ強化プロジェクト



Exec Shieldは、2002年後半にレッドハットによって開始されたプロジェクトで、Linuxシステムに対するワームなどの自動化された攻撃のリスクを軽減するための取り組みです。このプロジェクトの初期の成果として、Linuxカーネル用のセキュリティパッチが用意され、特にNXビットがハードウェアで実装されていないx86系マイクロプロセッサ向けにエミュレートされました。Exec Shieldには、その他にも数多くの機能が付随していますが、初期のパッチを指す場合もあります。

概要



Exec Shieldの最初のパッチでは、メモリの利用方法を厳格に管理しています。具体的には、データ用メモリページを実行不可能にし、コード用メモリページを読み書きできない状態とします。この措置によって、攻撃者がバッファオーバーランなどの手法を用いてデータ内に悪意のあるコードを挿入することが困難になります。また、この仕組みではmmap()の利用やヒープのベースアドレスのASLR(Address Space Layout Randomization)を実施し、シェルコードの挿入や実行も難しくします。

再コンパイルなしでExec Shieldを導入できますが、一部のアプリケーション(例:Mono、Wine、XEmacs)は動作にわずかな変更が生じる場合があります。Exec Shieldプロジェクトは、Position Independent Executables(PIE)などのLinuxカーネル用ASLRパッチ、glibc内部のセキュリティチェックの強化、GCC Fortify Source機能、GCCスタックプロテクタの移植と統合といったさまざまな機能を生み出しています。

実装 Details



Exec Shieldは、x86CPUのコードセグメント境界を活用する形で実装されています。その結果、非常に軽量であり、メモリの利用効率を高めることができますが、仮想メモリの配置を完全に保護するわけではありません。たとえば、mprotect()によって実行可能な範囲を広げると、その範囲内における保護が無効になります。この点については、Ingo Molnarが電子メールを通じて指摘しています。しかし、多くのアプリケーションにとっては大きな問題とはなりません。特に、重要なスタックは、アプリケーションが実行可能に指定しない限り、実行できない状態に保たれます。

2004年8月時点では、Exec Shieldプロジェクトの成果物がmprotect()の制限を設けていないため、古い実行不可能なメモリでも必要に応じて実行可能に変更できる可能性があります。カーネルは、アプリケーションに対して同時にメモリページを実行可能かつ書き込み可能にすることがあり得ますが、Fedora Coreディストリビューションの標準ポリシーでは、SELinuxとの併用を通じて、互換性の理由から一部の例外を除いて、ほとんどの実行ファイルのそのような動作は禁止されています。

歴史



Exec Shieldの開発には、レッドハットのさまざまなエンジニアが関与しました。最初のパッチをリリースしたのはIngo Molnarで、2003年5月に行われました。このパッチはFedora Core 1から6、そしてRed Hat Enterprise Linux 3(update 3)から4で採用されました。他にも、Jakub JelínekやUlrich Drepper、Richard Henderson、Arjan van de Venなど、多数の人々がこのプロジェクトに貢献しています。

関連項目



外部リンク


  • - [Ingo Molnar's Exec Shield patch web page]
  • - [Newsforge Feature Article]
  • - [Red Hat Magazine Feature/Project Article]
  • - [Exec Shieldの問題点]

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。