2016-12-10 4 views
1

ヒープベースの悪用をより困難にするためにglibcがどのような対策を講じているかについての情報はありますか?私はいくつかのLinuxディストリビューションのセキュリティ機能リストページで、PTR_MANGLEや曖昧な「ヒープ一貫性チェック」などいくつかのことについて聞いたことがありますが、実際にこれらのメカニズムが実際にどのように実装されているかについて詳細な情報は見つかりませんでした。効果的であり、どのような脆弱性クラスに含まれています。上記の機能を名前で検索しても、glibcのドキュメントを見つけることができませんでした。glibcヒーププロテクションメカニズムに関する情報?

どのような機能が実装され、どれくらいうまく機能しますか? glibcには、スタック上のスタックを壊すプロテクタに似たヒープ一貫性チェック機構がありますか? PTR_MANGLEはすべてのポインタを単に "暗号化"するのか、あるいはその一部だけを暗号化しますか?そして、最も重要なのは、これらの機能をエンドユーザーが有効にすることができるのか、それとも使用する特定のAPIに依存するのか、私が実際に使用するプログラムを作成した人が実際に保護メカニズムを有効にすることを願っていますか?

+0

「glibcヒーププロテクション」でGoogle検索を試しましたか?あなたの質問が最初に出てくるが、それ以降の参考文献は見た目が面白い。 (Glibcのマニュアルのように、あなたが望むほど素早く役に立たないものもあります)同様に、 'glibc ptr_mangle'は多くの有用な情報を提供します。 –

+0

@JonathanLefflerありがとう、私は "glibc ptr_mangle"を検索し、それに関する私の質問のほとんどの答えを見つけました。私が見つけられなかった唯一の情報は、glibcでコンパイルされたすべてのプログラムに対してptr_mangleが有効になっているかどうか、あるいはプログラムを書く人が特別な機能を使って保護する必要があるかどうかです。私はそれが自動保護だと思いますが、それを証明するものは何も見つかりません。私はglibcがヒープのためのスタック・カナリアのようなものを実装しているかどうかを知ることもできませんでした。 –

+0

あなたは[質問のlibcのポインタ暗号化について](http://stackoverflow.com/questions/19584160/questions-on-libcs​​-pointer-encryption)を調べることができます。この文書には、参考になる別の文書へのリンクがあります。 –

答えて

0

PTR_MANGLEはglibc自体の内部実装であり、プログラムで使用されるポインタには影響しません。オンザフライでオンにすることも、特定のプログラムでオン/オフにすることもできません。プログラムに対して不透明な内部glibcデータ構造だけを保護し、それでもコードフローを直接ハイジャックするためのもの(例:vtables /関数ポインタ)に焦点を当てています。一般データ(カウンタなど)には使用されません。

現在、私はglibcがヒープページのためにガードページを使用しているとは思っていませんが、人々はそれに取り組んでいます。上流のメーリングリストでトピックの最近の投稿を検索することができます。スタックのガードページは長い間使用されていましたが、スタックカナリア(ssp)ではなく、スタックを吹き飛ばすためのものです。

関連する問題