PID Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
PID(プロセス識別子)名前空間は、Linuxカーネルの機能であり、プロセスの隔離を提供します。これにより、一群のプロセスが他の名前空間のPIDとは別に独自の一意のPIDセットを持つことができます。これは、プロセスの隔離がセキュリティとリソース管理に不可欠なコンテナ化に特に役立ちます。
新しいPID名前空間が作成されると、その名前空間内の最初のプロセスにはPID 1が割り当てられます。このプロセスは新しい名前空間の「init」プロセスとなり、その名前空間内の他のプロセスを管理する責任を負います。名前空間内で作成される各後続プロセスは、その名前空間内で一意のPIDを持ち、これらのPIDは他の名前空間のPIDとは独立しています。
PID名前空間内のプロセスの視点から見ると、同じ名前空間内の他のプロセスのみを見ることができます。他の名前空間のプロセスを認識せず、従来のプロセス管理ツール(例:kill
、wait
など)を使用して相互作用することはできません。これにより、プロセスが互いに干渉するのを防ぐための隔離レベルが提供されます。
新しいプロセスが作成されると(例:clone()
システムコールを使用して)、そのプロセスは新しいまたは既存のPID名前空間に割り当てられます。新しい名前空間が作成されると、そのプロセスはその名前空間の「init」プロセスになります。
カーネルは新しい名前空間内のPIDと親名前空間内の対応するPIDとの間のマッピングを維持します(つまり、新しい名前空間が作成された親名前空間)。このマッピングは、カーネルが必要に応じてPIDを変換できるようにします。たとえば、異なる名前空間のプロセス間で信号を送信する際などです。
PID名前空間内のプロセスは、同じ名前空間内の他のプロセスのみを見ることができ、相互作用できます。他の名前空間のプロセスを認識せず、そのPIDは自分の名前空間内で一意です。
PID名前空間が破棄されると(例:名前空間の「init」プロセスが終了すると)、その名前空間内のすべてのプロセスが終了します。これにより、名前空間に関連するすべてのリソースが適切にクリーンアップされます。
新しいインスタンスの/proc
ファイルシステムをマウントすることで、--mount-proc
パラメータを使用すると、新しいマウント名前空間がその名前空間に特有のプロセス情報の正確で孤立したビューを持つことが保証されます。
初期(デフォルト)PID名前空間からのrootユーザーは、新しいPID名前空間内のプロセスを含むすべてのプロセスを見ることができるため、すべてのPID名前空間を見ることができます。
PID名前空間にデフォルトの名前空間から入ると、すべてのプロセスを見ることができます。そして、そのPID nsのプロセスはPID nsの新しいbashを見ることができます。
また、あなたがrootでない限り、他のプロセスのPID名前空間に入ることはできません。そして、それに指し示すディスクリプタなしに他の名前空間に 入ることはできません(例えば、/proc/self/ns/pid
のように)。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)