CLONE_NEWPIDにCAP_SYS_ADMINが必要なのはなぜですか?

CLONE_NEWPIDにCAP_SYS_ADMINが必要なのはなぜですか?

man 2 unshare私たちに教えてください

CLONE_NEWPID を使用するには、CAP_SYS_ADMIN 関数が必要です。

そしてさらに読むことを提案することは、man 7 pid_namespacespid_namespacesをroot / CAP_SYS_ADMINに制限するために必要な可能性のあるリスクについて実際には議論しません。

CLONE_NEWPIDroot以外のユーザーが実行している場合、どのようなリスクがありますか?

クローンからいいえ CLONE_NEWPIDpid_namespace は変更されないままであるため、空の pid_namespace を新規作成するよりも、状況がより広範囲で潜在的に危険になる可能性があります。

残念ながら概念はありません。UserPID 名前空間root以外のユーザーにとっては、Linux上で子プロセスを確実に追跡することは困難です。 pid_namespacesは非常に便利な機能なので、なぜpid_namespacesをCAP_SYS_ADMIN実行するのが適切であると考えられるのか理解できませんCLONE_NEWPID。そんな危険な忙しさにつながるポイントを私が逃しているのでしょうかCLONE_NEWPID

答え1

私はこれが予防策だと思います。許可されていないユーザーは、許可しないsudo操作を実行するのに混乱を与えないように、set-user-id(またはset-file機能)などのプログラムに制限を適用することは許可されていません。

場合によっては set-uid などの上昇を防止してこれを施行します。これはseccompを使用してシステムコールをフィルタリングするときに取るアプローチです。

ただし、名前空間の目的は、名前空間のユーザーIDを許可することです。ネームスペースは、最も単純なものから始まり、最終的にユーザーのネームスペースを形成する段階的な方法でメインラインLinuxにマージされました。まだ完全な権限を持っていないときにPID名前空間に入るときにno-new-privsを適用する特別なケースを追加することに興味がある人は誰もいないようです。

これらの名前空間の相互作用は非常に複雑になるため、これらのケースの需要がそれほど高くない場合は、あまりにも多くのケースを追加しないことをお勧めします。

関連情報