たとえば、一部のネットワーク/Webサーバーが「rootとして実行」されると、Frontline Data Packetパーサーで「rootとして実行」されるLinuxプログラム(この場合はバイナリ)の脆弱性が危険であると聞きました。 「rootとして実行」されていないプログラムよりも、攻撃者はシステムをより深刻に損傷する可能性があります。
私は、ユーザーAがバイナリを実行しても、他のユーザーのコンテキストで実行されることを意味するビットが設定されたバイナリにsetuid
精通しています。setuid
しかし、私の混乱は、プログラムがどのように「rootとして実行されますか?」という表現にあるようです。プログラム自体がコンピュータprocess
上のrootユーザーの身元を想定していますか?process
ルートとして実行されるプロセスがより危険なのはなぜですか?私のLinuxシステムでは、どのプロセスがrootとして実行されているかを正確に知ることができますか?たとえば、いくつかの実行可能ファイルは次のようになります。所有するユーザーまたはグループごとにroot
、しかし、これは本質的にプログラムローダによってメモリにロードされたときに常に「rootとして実行される」ことを意味しますか?
ベストアンサー1
このプログラムは「ルートとして実行"!
プログラムが...プログラムの場合、ルート(このコンテキストでは)はユーザーです。
- 根ユーザーroot(ユーザー)でプログラムを実行します。
- ルートではないユーザー(そうであれば)rootとしてプログラムを実行します。
この場合、利用者は(自分の身分に関係なく)実際のアイデンティティ) は root ユーザーと同じ権限を持つとみなされます。
したがって、プログラムはルート所有プロセスの優先順位を終了/変更し、ルートアクセス権に応じてファイル/ディレクトリ/デバイスノードにアクセスし、より有利なセキュリティ制限を利用できます。
これは次の場合に発生する可能性があります。
- このプログラムはrootが所有する実行可能ファイルです。実行時のユーザーIDの設定置く,
sudo
ユーザーが次のようにプログラムを起動した場合- もちろん、rootユーザーがプログラムを起動する場合です。
aの最初の列はps -ef
次のとおりです。効果的なシステムで実行されるすべてのプロセスの所有者です。読めるなら根その後、root権限を持つユーザーに代わってプロセスが実行されます。
上記の機能は潜在的に危険です。プログラムにバグがある場合、またはある種のプログラムが一部の脆弱性を悪用する場合、root 権限を不適切に使用する可能性が高くなります。
また、root権限でプログラムを実行すると、プログラムが削除される可能性があります。setuid
syscallを使用して、最終的にある時点でこれらの権限を再取得します。seteuid
システムコール。
したがって、プロセスの所有者は、プロセスの寿命中に必ずしも固定されているわけではありません。