Exec Shieldレッドハットが2002年後半に開始したプロジェクトであり、Linuxシステムに対するワームなどの自動化された攻撃の危険性を低減することを目的としている。最初の成果は、Linuxカーネルセキュリティパッチであり、NXビットがハードウェアで実装されていないx86マイクロプロセッサでNXビットをエミュレートするものだった。Exec Shield には他にも多数のコンポーネントがあるが、この最初のパッチだけを Exec Shield と呼ぶ人もいる。

概要

編集

この最初の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スタックプロテクタの移植とマージなどがある。

実装

編集

Exec Shieldは、x86CPUのコードセグメント境界を利用して動作する。そのため非常に軽量であるが、任意の仮想記憶配置を完全に保護するわけではない。mprotect() で実行可能な範囲を広げると、その範囲内の保護は無効になる。Ingo Molnar は電子メールでの会話でこの点を指摘している。幸いにもほとんどのアプリケーションはその点で問題ない。特に重要なスタックは、アプリケーションが明示的に指定しない限り実行可能にはならない。

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

歴史

編集

Exec Shield はレッドハットの様々な人々が開発に関わった。最初のパッチを2003年5月にリリースしたのはレッドハットの Ingo Molnar であった。これは Fedora Core 1から6とRed Hat Enterprise Linux 3 (update 3) から4に採用された[1][2]。他に関与した人々としては、Jakub Jelínek、Ulrich Drepper、Richard Henderson、Arjan van de Ven らがいる。

関連項目

編集

脚注

編集
  1. ^ Fedora Core 1 Release Notes”. Red Hat, Inc. (2003年11月). 2003年12月2日時点のオリジナルよりアーカイブ。2007年10月18日閲覧。
  2. ^ van de Ven, Arjan (2004年8月). “New Security Enhancements in Red Hat Enterprise Linux v.3, update 3” (PDF). Red Hat, Inc.. 2005年5月12日時点のオリジナルよりアーカイブ。2007年10月18日閲覧。

外部リンク

編集

📚 Artikel Terkait di Wikipedia

NXビット

ジテーブルフォーマットに準拠している必要がある。 この機能がハードウェアに搭載される前には、数々のオペレーティングシステムが、W^XまたはExec Shieldなど、ソフトウェアを通してこの機能を実現しようとした。これらはこの記事の最後の方で解説される。 NXビットの機能を利用可能、もしくはエミュレート可能なオペレーティングシステム

アドレス空間配置のランダム化

Linuxは弱い形のASLRを、カーネルバージョン2.6.12からデフォルトで有効にした。PaXとExec ShieldのLinuxカーネルに対するパッチ集はより完全な実装を提供する。Adamantix、Alpine Linux、Hardened Gentoo、およびHardened

バッファオーバーフロー

れている。それ以外のオプショナルなパッケージとしては以下のものが挙げられる。 PaX Exec Shield Openwall また、プロプライエタリなアドオンとしては以下のものがある。 BufferShield StackDefender なお、2018年現在広く使われているx64アーキテクチャのプロセッサでは、W

Grsecurity

PaX Linux Security Modules (LSM) grsecurityの作者はLSMを使用しないことに言及している。[1] Exec Shield Security-Enhanced Linux 公式サイト grsecurity on freshmeat

PaX

する。これにより、スタックなどの高位のアドレスにある領域は性能低下なしに処理され、低位のアドレスにある領域は従来通りに処理される。これは、Exec Shield や OpenBSD の W^X (Write XOR Execute) 実装に似ている。 SEGMEXEC は、IA-32

Fedora

ポータル FOSS ポータル オペレーティングシステム Red Hat Enterprise Linux Fedora Project CentOS Exec Shield Linux Linuxディストリビューションの比較 Linuxライブディストリビューションの比較 公式サイト 質問フォーラム (英語) 公式リリーススケジュール

ハードニング

Unix や Linux には、複数のハードニング方法がある。ハードニングの際には、併せて他の方法も用いられることがあり、特に、Exec Shield や PaX といったパッチをカーネルに適用する、侵入検知システムやファイアウォール、侵入防止システムを導入しポートを塞ぐなどの方法が採ら

実行保護

BMのPowerPCそしてIntelのIA-64(Itanium/Merced)の一部にも同等の機能がある。 Linuxでの実装はPaXやExec Shield、OpenBSDではen:W^Xやen:Openwall等がある。 Windowsでの実装はデータ実行防止 (DEP)