1. コンテナの基礎技術
Linux コンテナはホストと分離するために様々な Linux カーネルの仕組みを利用しています。
攻撃が生じる特定の領域に複数の保護レイヤを導入し、各レイヤは同種の攻撃に対して脆弱にならないような多層防御の仕組みが取られています。
本章ではその保護の仕組みについて取り上げます。
Namespace
Linux コンテナのリソース分離技術の要である Namespace について簡単に紹介します。
chroot と pivot_root
コンテナのファイルシステムを分離するために必要な2つの仕組み chroot
と pivot_root
について紹介します。
また、chroot の問題点についても取り上げます。
Capability
Linux において権限を柔軟に付与できる仕組みである Capability について紹介します。
seccomp
呼び出されるシステムコールの制限を行う seccomp について紹介します。
AppArmor
ubuntu / debian などで、コンテナの保護機能の一つとして利用されている Linux Security Module である AppArmor について紹介します。
cgroup
プロセスのリソース使用量を制限する仕組みである cgroup について紹介します。
2. コンテナのセキュリティと攻撃例
Linux コンテナの攻撃方法やそのセキュリティについて取り上げます。
Breakout Container
コンテナからホストに脱出することは Breakout / Jailbreak / Escape と呼ばれます。Privileged コンテナなど、過剰な権限を与えた場合にホスト側に Breakout できてしまうことを攻撃例を交えて紹介します。
Sensitive file mount
特定のファイルをマウントした場合にホスト側に Breakout できる攻撃例を紹介します。
DoS
コンテナからホスト側に対する DoS 攻撃例を紹介します。
コンテナ実行権限を持つグループへユーザー追加することについて
Docker や LXD を操作するために一般ユーザーをそれぞれの実行権限を持つグループに追加した場合の危険性について紹介します。
AppArmor Bypass
AppArmor のバイパス方法について紹介します。
seccomp Bypass
seccomp のバイパス方法について紹介します。
イメージレイヤへの機密情報の保存
イメージビルド時に機密情報をイメージに含めると、生成されたイメージから抽出することができるケースがあります。
イメージレイヤの仕組みと具体例について紹介します。
イメージスキャナ
Docker イメージに含まれるソフトウェアの脆弱性を検出するイメージスキャナと、スキャナ自体の脆弱性について紹介します。
3. Hardening Container
コンテナをより安全に実行するための方法について紹介します。
No New Privileges
子プロセスが特権を獲得しないようにする No New Privileges について紹介します。
AppArmor
AppArmor のプロファイルの自動生成などについて紹介します。
seccomp
seccomp のプロファイルの自動生成などについて紹介します。
runtime
ランタイムやカーネルの脆弱性からホストを守るために containerd / runc 以外の CRI / OCI ランタイムについて紹介します。
monitoring
TBD
CIS Benchmark
CIS Benchmark の紹介とツールを使った確認方法について紹介します。