脆弱性を削減し、安全なコンテナイメージを作るための新しいアプローチ:Hardened Container Images

>100 Views

May 12, 26

スライド概要

クラウドネイティブ会議
https://kaigi.cloudnativedays.jp/

多数の OSS で構成されているコンテナイメージは、近年急増する改ざんや脆弱性を狙ったサプライチェーン攻撃の主要な標的となっています。

一方で、イメージスキャンやアラートを導入しても、脆弱性や依存関係の多さから対応が後回しになってしまったり、修正対応が開発者の大きな負荷となっているケースも少なくありません。

このような課題に対し、脆弱性や依存関係を最小化したデフォルトで安全なコンテナイメージ「Hardened Container Images」の採用が注目を集めています。

本セッションでは、Docker が 2025 年 12 月に Apache 2.0 ライセンスのオープンソースとして無償提供を始めた「Docker Hardened Images (DHI)」を一つの実践例として、コンテナイメージにおける依存関係や脆弱性がなぜ削減しづらいのか、そして Hardened Container Images がどのように「後追いではない」サプライチェーンセキュリティを実現できるのかを解説します。

profile-image

複数の日系企業でテスト自動化エンジニア・DevOpsエンジニアとして活動した後、プリセールスエンジニアとして DevOps、CI/CD、自動テストを中心にお客様の技術支援や技術発信を行ってきました。2024年日本拠点1人目のプリセールスエンジニアとして Docker に入社。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

脆弱性を削減し、安全なコンテナイメージ を作るための新しいアプローチ Hardened Container Images クラウドネイティブ会議 Tadashi Nemoto Strategic Solutions Engineer, Docker

2.

このセッションの概要 多数の OSS で構成されているコンテナイメージは、近年急増する脆弱性を狙ったサプライチェーン 攻撃の主要な標的となっています。 一方で、イメージスキャンやアラートを導入しても、脆弱性や依存関係の多さから対応が後回しに なってしまったり、修正対応が開発者の大きな負荷となっているケースも少なくありません。 このような課題に対し、脆弱性や依存関係を最小化したデフォルトで安全なコンテナイメージ 「Hardened Container Images」が注目を集めています。 本セッションでは、 Docker が 2025 年 12 月に Apache 2.0 ライセンスのオープンソースとして無償提供を 始めた「Docker Hardened Images (DHI)」を一つの実践例として、コンテナイメージに おける脆弱性がなぜ削減しづらいのか、そして Hardened Container Images がどのように 「後追いではない」サプライチェーンセキュリティを実現できるのかを解説します。

3.

アジェンダ ● コンテナイメージに含まれる依存関係と脆弱性、 ソフトウェアサプライチェーン攻撃 ● 安全なイメージを選択する基準と Hardened Container Images ● Hardened Container Images への移行方法(デモ) ● よりコンテナイメージを強化するアプローチ ● まとめ

4.

コンテナイメージに含まれる依存関係と脆弱性 ソフトウェアサプライチェーン攻撃

5.

Dockerfile FROM node:20-alpine OSAlpine Linux)とランタイム Node.js)、それに必要な依存関係がイ ンストールされたベースイメージを利用 WORKDIR /app RUN apk add --no-cache curl 必要な OS パッケージを個別に インストール COPY . . RUN npm install --production EXPOSE 3000 CMD ["npm", "start"] アプリケーションの依存パッケージ (npm, pip, Maven, RubyGem など) をインストール

6.

ソフトウェアサプライチェーン攻撃 コンテナイメージには、多くの OSS の依存関係を含む ことになり、その依存関係の中に(意図的にインストー ルしていなくても)改ざんされた コンポーネント・脆弱性が含まれている場合、 自分たちのコンテナイメージにも影響を受ける 1つのパッケージを改ざん・脆弱性を悪用するだけで、(意 図的にインストールしていないものも含め)多くのアプリ ケーションに悪影響を与えることが できる https://anchore.com/software-supply-chain-security/what-is-sscs/

7.

脆弱性(CVEs)の急増とサプライチェーン攻撃の深刻化

8.

利用者の慢心 Complacency)による リスクの放置・拡大 99.5% 80% 以上 13% 修正版が提供された OSS コンポーネント アプリケーション 依存関係が1年以上 アップデートされて いない Log4Shell 公開から3年 以上経過した後にも、 影響のあるバージョンがダ ウンロード 適切に対応できていれば、 ほとんどのリスクは防げたも の sonatype: 10th Annual State of the Software Supply Chain

9.

Dockerfile FROM node:20-alpine WORKDIR /app ➔ シェルやパッケージマネージャーなどアプ リケーション実行には必要ない コンポーネントが、潜在的な脆弱性の総数 を増加させる RUN apk add --no-cache curl ➔ 開発者自身で中身を修正したり、 脆弱性パッチすることが難しい COPY . . ➔ 一般的には開発者コミュニティが 作成・メンテナンスしているため、 脆弱性対応がボランティアベース RUN npm install --production EXPOSE 3000 CMD ["npm", "start"] ➔ 発行元が不明確だと、マルウェアの 混入やバックドアが仕掛けられる 可能性も

10.

CLI $ docker run -e POSTGRES_PASSWORD=dev \ -p 5432:5432 postgres:17.1 $ psql -h localhost -U postgres サードパーティーのイメージを本番環境などで動かした場合にも、 この依存関係・脆弱性・改ざんの問題は残り続ける

11.

安全なイメージを選択する基準と Hardened Container Images

12.

安全なイメージを選択する基準 信頼できるパブリッシャーからイメージ を選択する 必要最小限のコンポーネントで構成された イメージを選択する 発行元が不明確なイメージを排除することによって、 公式を装った悪意のあるイメージ(タイポスワッピング)やマル ウェアの混入・バックドアが仕掛けられたイメージを未然に防ぐ アプリケーション実行自体には不要なパッケージを なるべく排除したイメージを選択することで攻撃対象領域や潜 在的な脆弱性の総数を削減 Docker Hub では発行元を明確にした、より信頼性のあるイ メージをカテゴライズして提供 ➔ Slim Debian から、実行に必須ではないファイルを削除して、一 部軽量化したもの) ➔ Docker Official Images Docker と開発元が共同でメンテナンス) ➔ Docker Verified Publisher Images Docker のパートナーシップを結んだ企業が提供) ➔ Docker Sponsored OSS Images Docker が支援している OSS プロジェクト) ➔ Alpine Alpine Linux という Linux ディストリビューション をベースにしたもの。軽量かつ攻撃対象領域が小さいが、 互換性の問題が出る可能性も) ➔ Distroless (アプリケーションとその依存関係のみを含めた、 究極に削減されたイメージ。デバッグのしづらさなどが課題 になることも)

13.

イメージ選定における課題 発行元が明確なイメージ ≠ 依存関係・脆弱性が少ない 必要最小限のコンポーネント ≠ 脆 弱性対応が速い Distroless はイメージの 種類が少ない その中でも様々なイメージの種類が提供され ており、その選択次第で依存関係・脆弱性の 総数が異なる 潜在的な脆弱性の総数は減らせるものの、 発生した脆弱性に対する修正は依然としてコ ミュニティによるボランティアベース 主要な言語ランタイムJava, Python, Node.js, Go, Rust など)のみで、 Postgres, Redis, Nginx などのイメージは 提供されていない 組織として安全なイメージを選定したい場合に 複雑になってしまう・統制が効かなくなってしまう

14.

Hardened Container Images 依存関係・脆弱性を根本から大幅に削減Near Zero CVEs)し、脆弱性が検知されると 即座にパッチ適用を行うSLA保証) Chainguard Containers Docker Hardened Images(DHI) Enterprise ソフトウェアサプライチェーンセキュリティに特化したChainguard 社が 2022 年から提供を開始した Hardened Container Images Docker 社が 2025 年から提供を開始した Hardened Container Images コンテナ専用に設計されたOS「Wolfi」を採用し、不要な パッケージが極限に削減されている ➔ ➔ ➔ 2000 以上のイメージを提供 CVE に対する SLA 保証 最大 6 ヶ月の EOL Grace Period(猶予期間) を提供 既存の Linux ディストリビューションAlpine / Debian)と高い互換性 を持っており、Dockerfile に大きな変更をすることが なく、依存関係や脆弱性を大幅に削減 ➔ ➔ ➔ 2000 以上のイメージを提供 CVE に対する SLA 保証 オプションで、最大 5 年間の Extended Lifecycle Support を提供

15.

ベースイメージに含まれる脆弱性を 24 時間以内に修正 Golang プロジェクトで広く使われている golang.org/x/crypto/ssh に影響を与える3つの脆弱性 (CVE-2025-47913, CVE-2025-47914, CVE-2025-58181) DHI Enterprise は 24 時間以内にパッチ修正版を リリース ● バッチスケジュールではなく、 CVE が発表されたら 即時にアドバイザリーデータベースに 取り込み、モニタリング ● SBOM を参照し、影響のあるイメージを即時 評価 ● 自動的にセキュリティパッチワークフローを 実施し、修正版イメージを配布 https://www.docker.com/ja-jp/blog/how-docker-hardened-images-patch-cves-in-24-hours/

16.

2025/12 Community Edition CVEs がほぼゼロのイメージを 2000 以上提供 シェルやパッケージマネージャーを含めない攻撃対象領域を 大幅に削減した distroless ランタイムイメージも提供 既存の Linux ディストリビューション Debian, Alpine) との高い互換性、簡単な移行を実現 SBOM, Provenance, CVE 情報の完全公開 SLSA Build Level 3 の実現 Apache 2.0 の完全なオープンソース

17.

無償版 Hardened Container Images 比較 2026年5月時点) 利用できるイメージの種類 Linux ディストリビューション SBOM や CVE 情報の提供 CVE修正に対する SLA 保証 Distroless Chainguard Containers Docker Hardened Images Community 主要な言語ランタイムJava, Python, Node.js, Go, Rust など)のみ 「Developer Images」 として約50種類の主要 イメージを利用可能 latest のみ 言語ランタイムだけでなく Postgres, Redis, Nginx 含め 2000 以上 複数バージョンを提供 Debian(glibc) ベース 独自OS「Wolfi」 Debian(glibc)ベースと Alpine(musl)ベース

18.

Hardened Container Images への移行方法 (デモ)

19.

よりコンテナイメージを強化するための アプローチ

20.

2026/03 Docker Hardened System Packages 10000 以上の OS パッケージを Docker がソースコード からビルド・署名し、個別にセキュリティ強化 全ての DHICommunity版含め)の OS パッケージは Hardened Systems Packages から構成 DHI の有償版では Hardened System Packages を個別に 追加し、カスタマイズすることが可能 CVE 修正に対する SLA サポート範囲内 (有償版)

21.

Dockerfile FROM node:20-alpine 約 2000 以上 WORKDIR /app RUN apk add --no-cache curl 約 10000 以上 COPY . . RUN npm install --production 言語によって異なる EXPOSE 3000 主要な言語のものだけで も数万〜 CMD ["npm", "start"]

22.

Docker Hardened Images + Socket Firewall 独自のプロキシを使って、パッケージマネージャーから依存関係をダウンロードする前に 既知・潜在的なマルウェアを特定し、悪意のあるパッケージをブロック Docker Hardened Images の言語ランタイムのイメージ(Node.js, Python, Rust) には Socket Firewall の Free 版と Enterprise 版が同梱されているものを提供 https://socket.dev/blog/socket-firewall-now-available-in-docker-hardened-images

23.

まとめ

24.

まとめ ● コンテナイメージには多くの OSS の依存関係が含まれており、その脆弱性を狙ったソフト ウェアサプライチェーン攻撃が急増・深刻化 ● 特にベースイメージに含まれる不要な依存関係(シェルやパッケージマネージャー)によっ て潜在的な脆弱性の総数が増えがち ● 組織として安全なイメージを選択したい場合に複雑になってしまう・統制が 効かなくなってしまう ● Hardened Container Images ● ○ 信頼された発行元から提供された、アプリケーション実行に不要な 依存関係・攻撃対象領域を大幅に削減されたイメージ ○ 既知の CVEs をほぼゼロ、追加で迅速な脆弱性パッチ・SLA保証のサポートを受け ることが可能 よりコンテナイメージを強化するアプローチとして、OSパッケージの強化(Hardened System Packages)や、依存関係インストール時の保護 (Socket Firewall)