3

strcpy(argv[0], "test", strlen(argv[0])) などの argv[0] 変数を上書きする可能性を Linux でブロックすることは可能ですか? この変更をブロックするか、少なくともログに記録したい。

PSカーネルを変更したいと思っています。この変更を「キャッチ」できるカーネルソースの呼び出しまたは関数を見つけるのを手伝ってください。argv[0] が変更され、/proc/_pid_cmdline の内容も変更されていることに気付きました。fs/proc/base.c の proc_pid_cmdline() に単純なログを記録しようとしましたが、うまくいきませんでした。私は欲しかった。ありがとう。

4

2 に答える 2

3

一般に、解決策は、引数を含むメモリ ページを読み取り専用にすることです。これにより、内容を変更しようとするとメモリ アクセス違反が発生します。C ランタイム スタブまたは Linux カーネルを変更することで、それをキャッチし、後で何をすべきかを決定できます。

于 2013-02-04T16:18:00.290 に答える
2

argvを介して公開しないようにカーネルを「修正」する方がはるかに簡単/良いでしょう/proc/$pid/cmdline。おそらく、これは実際には危険なセキュリティ リークであり、プロセスに属するプライベート メモリが公開されます。たとえば、これはばかげた例ですが、適合するプログラムは、引数の使用が終了した後、引数文字列によって以前に占有されていたスペースにパスワード、暗号化キーなどを格納できます。

本当に許可したいが変更をログに記録するcmdline場合は、はるかに困難になります。データが最初は読み取り専用のページにあるように調整し、そこへの書き込みをトラップして、書き込みを許可しますが、書き込み試行が発生したときに変更をログに記録する必要があります。これは本当に壊れやすく、維持するのが難しいと思います。

于 2013-02-04T16:16:33.100 に答える