2017-03-26 55 views
0

私は共有/ダイナミックライブラリの仕組みを理解しようとしています。私は一般的な把握があると思うが、私は彼らが悪用からどのように保護されているか理解できない。共有ライブラリはどのように悪用されないのですか?

プログラムが共有ライブラリを使用する場合、実行時にリンクされていることを理解しています。そのため、リンカはすべての欠落したシンボルをそれぞれのライブラリに解決します。

共有ライブラリの関数が実際に呼び出されたとき、実行が共有ライブラリの実行可能ファイルにジャンプすると私は理解しています。

これは私の混乱の原因です。ライブラリ内のプライベートメソッドを呼び出し、エスカレートされた特権を得るために "推測"によってジャンプするアドレスを指定することはできませんでしたか?

私はこれをよりよく理解していただきありがとうございます。おかげ

+0

_ "エスカレートされた特権を得ますか?" _共有ライブラリは、メインプログラムと同じ権限で実行されません。 –

答えて

0

要するに、はい。プロセスを開始するプログラムは、アドレス空間を所有しており、好きなものを実行できます。ライブラリがエスカレーションにつながるより多くの特権を持つ別のプロセスと危険なやりとりをしている場合、他のプロセスは独自の防御を必要とします。誰かがあなたのライブラリ内のプライベートメソッドや静的関数を全く呼び出すことを妨げるものはありません。

1

はちょうどプライベートメソッド

はいを​​呼び出す ために、「推測」によってジャンプするアドレスを指定しないで1でした。しかし、あなたがこのプログラムを信頼しなければ、できることはもっと悪いことです。シンプルなソリューション:信頼していないプログラムは実行しないでください。

となる可能性があります。

いいえ。プロセスによって使用されるライブラリは、プロセス自体より多くの権限を持ちません。

-1

もちろん、これは可能ですが、ASLRのようなメカニズムがあり、「推測」方法を妨げています。さらに、オペレーティングシステムの範囲内で権限の昇格について話している場合、カーネルのデータとコードを操作して実行することをユーザーコードが禁止するページングがあります。

+0

ASLRは、プロセスが自身の正当なライブラリ(そのコンテンツを含む)へのアクセスを停止することはありません。ページングや実行可能なマーカー(全く同じものではありません) – deviantfan

-1

君たちとウインチーズの世界で育った人々は、より良い設計のシステムで逃してしまった。共有ライブラリを明示的に管理して、悪用されているものを削減するシステムがあります。このような共有ライブラリは、システムによってインストールされます。実際には、同じインストールがプログラムの特権を昇格させるために使用されます。たとえば、カーネルデータへのアクセスを必要とするプロセスモニターのような良質のプログラムは、ユーザーが自分で持っていない権限でインストールすることができます。

+0

a)そのようなシステムの名前はどうですか? b)理解できる文章(「搾取された人を削減するため」)を適切な文章(「宦官とウインドウズ」)で書くのはどうですか? c)これは** Unix&coやWindowsとどのような違いがありますか?ユーザーが持っている特権とは異なる特権を持つプログラムを実行することは、ユーザーが行うこととまったく同じです。 – deviantfan

関連する問題