Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテナセキュリティの基本と脅威への対策

 コンテナセキュリティの基本と脅威への対策

「Offers - 何から始める?脅威から考えるコンテナセキュリティのベストプラクティス」の登壇資料です。2024/04/16
https://offers.connpass.com/event/314412/

Kyohei Mizumoto

April 16, 2024
Tweet

More Decks by Kyohei Mizumoto

Other Decks in Technology

Transcript

  1. whoami Security Engineer at 3-shake inc. - Container/Kubernetes Security -

    AWS/Google Cloud Security - Security Operations & Technical Support for Blue Team - Cloud Native Security Assessment Others: - 3-shake SRE Tech Talk イベント運営 - 「コンテナセキュリティ」書籍監訳 Kyohei Mizumoto
  2. 本セッションについて ゴール - コンテナセキュリティの基本を知る - コンテナの脅威と対策の考え方を知る ターゲット - コンテナ作成者(アプリケーション開発者) -

    コンテナ実行基盤の管理・運用者 - その他、コンテナのセキュリティ対策に携わる人 ※ 今回はKubernetesセキュリティについては対象外とします
  3. 目次 1. About 3-shake 2. コンテナセキュリティ概要 a. コンテナ、コンテナイメージについて b. コンテナ固有のセキュリティ

    c. コンテナセキュリティの全体像 3. コンテナの脅威と対策 a. 脅威から考えるセキュリティ対策 b. コンテナの代表的な脅威と対策 c. コンテナの脅威例
  4. コンテナ概要 Linuxカーネルの機能を使用し、適度に分離されたプロセス - chroot (pivot_root) による root ディレクトリの分離 - cgroup

    によるリソース使用量の制限 - namespace によるアクセス範囲の制限 - capability による権限の制限 コンテナ - ホスト間の共有と分離 - カーネルおよび一部ファイルを共有 - 上記以外のホストのファイルへのアクセス不可(原則的に) - ホストのプロセスや他コンテナへのアクセス不可(原則的に)
  5. コンテナ環境の構成要素 コンテナの実行基盤 - ホストマシン(Linux VM) - コンテナランタイム(containerd + runc) -

    オーケストレーションツール(Kubernetes) コンテナイメージ関連 - Dockerfile - イメージレジストリ(DockerHub, ECR, Artifact Resistry etc...) - ビルド環境(GitHub Actions, CircleCI, Jenkins etc...)
  6. コンテナセキュリティとは コンテナ環境の各構成要素のセキュリティ対策 - コンテナ - ホスト間の分離の強化 - コンテナイメージのセキュリティ - コンテナ実行基盤のセキュリティ

    - etc... コンテナの要素技術と、セキュリティの観点の組み合わせ - 多層防御、最小権限などのセキュリティの原則に従う - リスクを評価し優先度をつけて対策を行う - コンテナにセキュリティの観点を当てはめるには、コンテナの理解が不可欠
  7. コンテナ - ホスト間の分離の強化 - コンテナプロセスの実行ユーザ指定 ◦ Dockerfile でのユーザ指定、rootless コンテナの利用など -

    特権コンテナの禁止 ◦ capability, seccomp, SELinux, /proc のマウントなどに影響 - capability の最小化 - seccomp によるシステムコールの制限 - AppArmor, SELinux によるファイル・プロセスへのアクセス制御 - コンテナのサンドボックス化 ◦ gVisor, Kata Containers, Firecracker など
  8. コンテナセキュリティの全体像 - Dockerfileのセキュリティ - ベストプラクティスに従う(非rootユー ザの利用、機微情報を含めない等) - コンテナイメージのセキュリティ - 脆弱性スキャン

    - イメージレジストリのセキュリティ - 実行基盤のセキュリティ - ホストマシン(VM) - コンテナランタイム(containerd, runc) - オーケストレーションツール(k8s) - シークレット管理 - ネットワークセキュリティ - Network Policy - ビルド・デプロイ時のセキュリティ - イメージ署名・検証 - パイプラインの権限制御 - Admission Control - ランタイム(実行時)セキュリティ - seccomp, AppArmor, SELinux - 振る舞い検知 - 監視とロギング - バックアップ
  9. コンテナセキュリティの全体像 - Dockerfileのセキュリティ - ベストプラクティスに従う(非rootユー ザの利用、機微情報を含めない等) - コンテナイメージのセキュリティ - 脆弱性スキャン

    - イメージレジストリのセキュリティ - 実行基盤のセキュリティ - ホストマシン(VM) - コンテナランタイム(containerd, runc) - オーケストレーションツール(k8s) - シークレット管理 - ネットワークセキュリティ - Network Policy - ビルド・デプロイ時のセキュリティ - イメージ署名・検証 - パイプラインの権限制御 - Admission Control - ランタイム(実行時)セキュリティ - seccomp, AppArmor, SELinux - 振る舞い検知 - 監視とロギング - バックアップ コンテナ固有のセキュリティ
  10. 参考: コンテナセキュリティ本について 1. コンテナセキュリティの脅威 2. Linuxシステムコール、パーミッション、 capability 3. コントロールグループ 4.

    コンテナの分離 5. 仮想マシン 6. コンテナイメージ 7. イメージに含まれるソフトウェアの脆弱性 8. コンテナ分離の強化 9. コンテナエスケープ 10. コンテナネットワークセキュリティ 11. TLSによるコンポーネントの安全な接続 12. コンテナへのシークレットの受け渡し 13. コンテナのランタイム保護 14. コンテナとOWASPトップ10 付録A:セキュリティチェックリスト https://book.impress.co.jp/books/1122101051
  11. 責任範囲とセキュリティ運用 責任範囲の明確化 - アプリケーション開発者: アプリケーションコード、コンテナイメージのセキュリティ - インフラ管理者: コンテナ実行基盤、CICD環境のセキュリティ - セキュリティ担当者:

    セキュリティ強化の推進、インシデントハンドリングなど 継続的なセキュリティの担保 - アプリケーションやコンテナの脆弱性管理 - セキュリティアラート運用 - セキュリティ設定の監査、見直し
  12. 脅威から考えるセキュリティ対策 脅威と有効なセキュリティ対策を知る - 一般的な脅威の知識 - 各セキュリティ対策がどのような脅威に有効か → セキュリティ対策の効果測定や、導入の優先順位付けに 対象システムの脅威を知る -

    自身の管理するシステム(アプリ、インフラなど)にどのような脅威が存在するか - システムの状況に応じて適切なセキュリティ対策を選択 → 脅威モデリング
  13. 脅威モデリング システムの潜在的な脅威を特定し、対策の優先順位を決定するプロセス アーキテクチャの理解 - システムのコアコンポーネント、ソースコードの場所や開発ライフサイクルなど 脅威の特定 - STRIDE、PASTA などの脅威モデルを利用 脅威アクターの定義

    - 外部攻撃者 - 外部からインターネット、サプライチェーンなどを介した攻撃を行う - 内部攻撃者 - システムに侵入することに成功した攻撃者、悪意のある組織内の関係者 - 内部関係者 - 不注意などで問題を引き起こす可能性のある組織内の関係者
  14. コンテナの脅威 コンテナを介してシステムや情報資産に悪影響を与える事象 - コンテナのプロセスや実行基盤、コンテナイメージを狙った攻撃 - コンテナ自体が Attack Surface にはならない →

    アプリケーションからの侵入や、漏洩した開発者権限の悪用など 代表的なコンテナの脅威 - 外部からのコンテナプロセス侵入 - 悪意のあるパッケージ混入 - コンテナ脆弱性の悪用
  15. 外部からのコンテナプロセス侵入 攻撃の起点 - コンテナ上で実行されるアプリケーション、OSパッケージの脆弱性 - 意図しないコンテナ操作権限の外部公開 影響 - コンテナを介した情報資産への不正アクセス -

    サービス停止、横展開によるシステム侵害の拡大など 対策 - アプリケーションやコンテナイメージの脆弱性対策 - コンテナ実行基盤の適切なアクセス制御
  16. 悪意のあるパッケージ混入 攻撃の起点 - 言語の依存関係やOSパッケージの汚染 - パッケージ名のTypoや、安全性の確認できないパッケージの利用 - Dockerfileやビルド環境への不正アクセス 影響 -

    コンテナプロセスへの侵入、マルウェア感染など 対策 - コンテナの構成把握と最新の脅威情報の収集 - コードレビューの徹底、コードリポジトリやビルド環境の適切なアクセス制御
  17. コンテナ脆弱性の悪用 攻撃の起点 - 脆弱なバージョンのコンテナ実行基盤(k8s, containerd, runc, etc...)の利用 - 新たなコンテナ脆弱性の発見 影響

    - コンテナランタイムの脆弱性によるホストへのエスケープ - etc... 対策 - コンテナ実行基盤の脆弱性対策 - seccompなどのランタイムセキュリティによる影響緩和
  18. コンテナの脅威例: Kinsing Malware コンテナ環境を標的とするクリプトマイナー - PHPUnit や WordPress などの脆弱なコンテナイメージを悪用 -

    PostgreSQL コンテナの設定ミスを利用し、Kubernetes 環境 への初期アクセスを獲得 https://techcommunity.microsoft.com/t5/microsoft-defender-for-cloud/initial-access-techniques-in-kubernetes-environments-used-by/ba-p/3697975
  19. コンテナの脅威例: runcの脆弱性 (CVE-2024-21626) WORKDIRの検証不備によるコンテナからホストへのエスケープ - runc <= 1.1.11 - コンテナの作業ディレクトリに、runc

    が /sys/fs/cgroup を開くのに利用するファイルディ スクリプタを設定 - 上記が設定されたDockerfileからのイメージビルド、ビルドしたイメージ実行により侵害 対策と緩和策 - runc 1.1.12へのアップデート - falco ruleなどによる脆弱性悪用の検知 - user namespaceの利用 FROM ubuntu WORKDIR /proc/self/fd/7 https://nvd.nist.gov/vuln/detail/CVE-2024-21626
  20. まとめ コンテナセキュリティの概要 - コンテナ固有のセキュリティ ◦ プロセス分離の強化、実行基盤やイメージのセキュリティ - コンテナセキュリティの全体像の把握 コンテナの脅威と対策 -

    脅威からセキュリティ対策を考える意義 - コンテナの代表的な脅威と対策 ◦ コンテナプロセスへの侵入、悪意のあるパッケージ混入、脆弱性の悪用 - コンテナの脅威例 ◦ コンテナを狙う脅威グループやマルウェア、コンテナランタイムの脆弱性など