Exec Shieldは、Linuxシステムに対するワームやその他の自動化されたリモート攻撃のリスクを軽減することを目的として、2002年後半にRed Hat , Inc.で開始されたプロジェクトです。このプロジェクトの最初の成果は、ハードウェアにネイティブNX実装がないx86 CPU上でNXビットをエミュレートするLinuxカーネルのセキュリティパッチでした。Exec Shieldプロジェクトには他にも多くのコンポーネントが含まれていますが、この最初のパッチをExec Shieldと呼ぶ人もいます。
最初のExec Shieldパッチは、データメモリを非実行可能、プログラムメモリを書き込み不可としてフラグ付けします。これにより、バッファオーバーフローや、データの上書きやそれらの構造体へのコード挿入を利用するその他の手法に起因する多くのセキュリティエクスプロイトを抑制します。Exec Shieldは、 mmap ()とヒープベースのアドレス空間レイアウトのランダム化も提供します。
このパッチは、シェルコードの挿入と実行の難易度をさらに高め、ほとんどのエクスプロイトを無効化します。exec-shieldを完全に利用するためにアプリケーションの再コンパイルは必要ありませんが、一部のアプリケーション(Mono、Wine、XEmacs、Mplayer)は完全に互換性がありません。
Exec Shield プロジェクトから生まれたその他の機能としては、Position Independent Executables (PIE)、Linux カーネルのアドレス空間ランダム化パッチ、ヒープおよびフォーマット文字列の悪用をほぼ不可能にする広範な glibc 内部セキュリティ チェック、GCC Fortify Source機能、および GCCスタック プロテクター機能の移植と統合などがあります。
実装
Exec Shieldは、コードセグメント制限を利用するすべてのx86 CPUで動作します。Exec Shieldの動作原理上、非常に軽量ですが、任意の仮想メモリレイアウトを完全に保護することはできません。例えば、mprotect()を呼び出してより高いメモリ領域を実行可能にするなどしてCS制限を引き上げた場合、その制限以下の領域では保護が失われます。Ingo Molnar氏は電子メールでのやり取りでこの点を指摘しています。ほとんどのアプリケーションはこの点に関してかなり健全です。スタック(重要な部分)は少なくともマップされたライブラリよりも上位に配置されるため、アプリケーションからの明示的な呼び出しがない限り実行可能になりません。
2004年8月現在、Exec Shieldプロジェクトでは、どのアーキテクチャにおいてもmprotect ()を制限してメモリ保護を強制する試みは行われていません。メモリは最初は実行可能ではないかもしれませんが、後から実行可能になる可能性があるため、カーネルはアプリケーションがメモリページを書き込み可能かつ実行可能として同時にマークすることを許可します。ただし、Security-Enhanced Linuxプロジェクト(SELinux)との協力により、 Fedora Coreディストリビューションの標準ポリシーでは、互換性上の理由によるいくつかの例外を除き、ほとんどの実行可能ファイルに対してこの動作が禁止されています。
歴史
Exec Shield は Red Hat の様々な人々によって開発されました。最初のパッチはRed Hat のIngo Molnarによって2003 年 5 月に初めて公開されました。これは Fedora Core 1 から 6 までと Red Hat Enterprise Linux バージョン 3 以降の一部です。[ 1 ] [ 2 ]他の関係者には Jakub Jelínek、Ulrich Drepper、Richard Henderson、Arjan van de Ven などがいます。
モルナーは2007年にLWN.netで「exec-shieldの一部はアップストリームに送られたが、かなりの部分は送られなかった」とコメントした。 [ 3 ]
参照
参考文献
- ^ 「Fedora Core 1 リリースノート」 . Red Hat, Inc. 2003年11月. 2003年12月2日時点のオリジナルよりアーカイブ。2007年10月18日閲覧。
- ^ van de Ven, Arjan (2004年8月). 「Red Hat Enterprise Linux v.3, update 3 の新しいセキュリティ強化」(PDF) . Red Hat, Inc. 2005年5月12日時点のオリジナル(PDF)からアーカイブ。 2007年10月18日閲覧。
- ^ 「プロジェクトをアップストリームカーネルに組み込むのにかかる時間 [LWN.net]」。lwn.net。