Docker --privileged
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)
特権コンテナを実行すると、無効にされる保護は次のとおりです。
特権コンテナでは、すべてのデバイスが/dev/
でアクセス可能です。したがって、ホストのディスクをマウントすることでエスケープできます。
カーネルファイルシステムは、プロセスがカーネルの動作を変更するためのメカニズムを提供します。しかし、コンテナプロセスに関しては、カーネルに対する変更を防ぎたいと考えています。したがって、カーネルファイルシステムをコンテナ内で読み取り専用としてマウントし、コンテナプロセスがカーネルを変更できないようにします。
/procファイルシステムは選択的に書き込み可能ですが、セキュリティのために、特定の部分はtmpfsでオーバーレイされ、コンテナプロセスが機密領域にアクセスできないように保護されています。
tmpfsは、すべてのファイルを仮想メモリに保存するファイルシステムです。tmpfsはハードドライブ上にファイルを作成しません。したがって、tmpfsファイルシステムをアンマウントすると、その中に存在するすべてのファイルは永遠に失われます。
コンテナエンジンは、デフォルトでコンテナ内で何が行われるかを制御するために、限られた数の能力でコンテナを起動します。特権のあるものは、すべての 能力にアクセスできます。能力について学ぶには、次を読んでください:
Linux Capabilitiesコンテナに対して --privileged
モードで実行せずに、--cap-add
および --cap-drop
フラグを使用して利用可能な機能を操作できます。
Seccomp は、コンテナが呼び出すことができる syscalls を 制限 するのに役立ちます。デフォルトの seccomp プロファイルは、docker コンテナを実行する際にデフォルトで有効ですが、特権モードでは無効になります。Seccomp についての詳細はこちらをご覧ください:
Seccompまた、Kubernetes クラスターで Docker(または他の CRI)を使用する場合、seccomp フィルターはデフォルトで無効になっていることに注意してください。
AppArmor は、コンテナ を 制限された リソース の セット に制限するためのカーネル拡張で、プログラムごとのプロファイルを使用します。--privileged
フラグを使用して実行すると、この保護は無効になります。
--privileged
フラグを使用してコンテナを実行すると、SELinux ラベルが無効になり、通常は unconfined
のコンテナエンジンのラベルを継承し、コンテナエンジンと同様の完全なアクセスを付与します。ルートレスモードでは container_runtime_t
を使用し、ルートモードでは spc_t
が適用されます。
ネームスペースは --privileged
フラグの影響を受けません。セキュリティ制約が有効になっていないにもかかわらず、システム上のすべてのプロセスやホストネットワークを見ることはできません。ユーザーは --pid=host
, --net=host
, --ipc=host
, --uts=host
コンテナエンジンフラグを使用して、個々のネームスペースを無効にすることができます。
デフォルトでは、コンテナエンジンはユーザー名前空間を利用しませんが、ルートレスコンテナはファイルシステムのマウントや複数のUIDを使用するためにそれを必要とします。 ルートレスコンテナに不可欠なユーザー名前空間は無効にできず、特権を制限することでセキュリティを大幅に向上させます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)