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

システム運用者に求められる脆弱性対応 | Vulnerability mitigation expected of system operators. by CVE-2024-21626

riita10069
February 21, 2024
160

システム運用者に求められる脆弱性対応 | Vulnerability mitigation expected of system operators. by CVE-2024-21626

システム運用者に求められる脆弱性対応
Vulnerability mitigation expected of system operators. by CVE-2024-21626

Container Runtime Meetup #5 で登壇させていただきました。
https://runtime.connpass.com/event/309313/

ホットな話題となっている、CVE-2024-21626 にフォーカスして、概要と実際に取るべき対応について話しました。

riita10069

February 21, 2024
Tweet

More Decks by riita10069

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 好きなAWSのサービス: 趣味: 謎解き、サッカー観戦、フットサル Ryota Yamada / riita10069
  2. CVE とは何︖ • CVE(Common Vulnerabilities and Exposures)は、 共通脆弱性識別⼦の略称。 • ⾮営利組織である

    MITRE Corporation が主導していおり、脆 弱性が特定されたときに⼀意に識別できるよう採番している。 • 脆弱性に関する情報共有を円滑ににするための国際的な標準と して確⽴されたもの。
  3. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 runc Host OS

    ホスト上に runc がインストールされています。
  4. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 runc Host OS

    Container ホスト上に runc がインストールされています。 runc がコンテナプロセスを起動する際に
  5. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 runc Host OS

    Container ホスト上に runc がインストールされています。 runc がコンテナプロセスを起動する際に WORKDIR にコンテナプロセスの ファイルディスクリプタを指定する WORKDIR /proc/self/fd/8/
  6. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 runc Host OS

    Container ホスト上に runc がインストールされています。 runc がコンテナプロセスを起動する際に WORKDIR にコンテナプロセスの ファイルディスクリプタを指定する WORKDIR /proc/self/fd/8/ /sys/fs/cgroup ホストOSへのハンドルとなる
  7. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 runc Host OS

    Container ホスト上に runc がインストールされています。 runc がコンテナプロセスを起動する際に WORKDIR にコンテナプロセスの ファイルディスクリプタを指定する WORKDIR /proc/self/fd/8/ /sys/fs/cgroup ホストOSへのハンドルとなる 起動したコンテナがホストディレクトリにエスケープできる
  8. CVE-2024-21626 の概要 CVSS v3 Base Score 8.6 シナリオ1 WORKDIR に細工をした

    新規のコンテナを起動 production Dockerfile シナリオ3 Build Pipeline WORKDIR に細工をした Dockerfileを差し込み CIサーバーなどを攻撃 シナリオ2 production すでに本番稼働している コンテナ内にプロセスを作成 docker exec –w /proc/self/fd/9
  9. 影響を受けるシステムとアプリケーションを特定する • AWS をご利⽤の場合 • https://aws.amazon.com/jp/security/security-bulletins/AWS-2024-001 • 重要度の⾼いCVEでは、公式から対応に関するアナウンスがされる。 • 今回の

    CVE-2024-21626 では、上記のサイトが公開された。 • 依存しているOSやミドルウェア等の利⽤がないかを確認する • 上記の Bulletin にも記載があるが AWS では、ECS/EKS などだけでなく、 Amazon Linux でも runc を利⽤している。 • https://alas.aws.amazon.com/cve/html/CVE-2024-21626.html • Amazon Linux Security Center に詳細が記載されているので確認 • 公式 (今回であれば runc) の告知も確認 • https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
  10. ECS(EC2) での対応 • ECS Optimized AMI をご利⽤の場合 • UpdateContainerAgent API

    を利⽤して指定したコンテナインスタン スの ecs-agent を最新に更新する。 • aws ecs update-container-agent • Windows コンテナインスタンスや arm64 インスタンスでは⾮対応 • ⾮対応の場合は、新しいコンテナインスタンスへ⼊れ替える • Auto Scaling Group の AMI を最新のものに設定 • UpdateContainerInstancesState API を使⽤して、古い AMI のコンテ ナインスタンスのステータスを DRAINING に変更する • インスタンスで実⾏されているすべてのタスクが STOPPED 状態に移 ⾏したら、EC2 インスタンスを ASG から解除し Terminate する • 新しいインスタンスが ECS クラスタに登録されるのを待つ • または、⼿動で ecs-agent を更新する • https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/manually_update_agent.html https://docs.aws.amazon.com/cli/latest/reference/ecs/update- container-agent.html
  11. EKS(EC2) での対応 • Managed Node Group をご利⽤の場合 • UpdateNodeGroupVersion API

    より、順次ノードの更新が可能 • aws eks update-nodegroup-version • Karpenter をご利⽤の場合 • NodeClass で AMI のバージョンを指定している場合、最新のバージョンに 更新をする必要がある。指定していない場合は、アクション不要 • Karpenter の Drift の機能により⼿作業で Drain せずとも⾃動で更新される • Pod Disruption Budget を利⽤することでサービスの可⽤性を担保 • 重要なすべてのアプリケーションに設定されていることを確認しておく https://docs.aws.amazon.com/ja_jp/eks/latest/APIReference/ API_UpdateNodegroupVersion.html
  12. コンテナランタイム脆弱性の緩和策と発⾒的統制 脆弱性が発見される前から、多層防御のセキュリティを構築しておくことが重要 サプライチェーンの保護 コンテナイメージの署名と検証 信用できるコンテナレジストリのみに制限 Latest タグを使わない 最小限のコンテナイメージ Dockerfile Dockle,

    Hadolint で不備の検出 マルチステージビルド 最小限のベースイメージ 不要なパッケージをインストールしない 非特権ユーザーを使う ホストを保護する仕組みを利用 Bottlerocket AMI を利用 Security Context を利用し UID 0 をコンテナに付与しない Read Only ファイルシステムを利用 発見的統制により検知する PrivilegeEscalation:Runtime/RuncContainerEscape PrivilegeEscalation:Runtime/RuncContainerEscape Execution:Runtime/ReverseShell DefenseEvasion:Runtime/ProcessInjection.Proc