Docker イメージの CVE 修正と予防について

最終更新: 2026-05-04 20:35:38 +0800 CST
原文は英語で書かれています。あなたはAI翻訳版を読んでいます。

要約: ベースイメージがどれだけ権威あるものであっても、次の 3 点は必須です。

  1. イメージで利用する上流のセキュリティ更新リポジトリが、正しく設定され有効化されていることを常に確認する。
  2. 最終的な業務用イメージには、RUN apt-get update && apt-get upgrade -y(または同等の処理)を必ず含める。
  3. 自分たちで週次または月次の再ビルドを必ず定期実行する。

背景 #

  1. Docker 公式イメージ(DOI)の単一の正本は、https://github.com/docker-library/official-images の master ブランチです。ここでは「Library definition files」という形式で、どのリポジトリのどのタグを積極的に再ビルドするか、そして Dockerfile の所在(git リポジトリ URL と commit ID)を定義しています。これらの repo:tag現在メンテナンス中と呼ばれます。
    • 参照される Dockerfile の git リポジトリは、大半は Docker 社自身 が管理していますが、すべてではありません。例えば こちら
  2. https://doi-janky.infosiftr.net/ の Jenkins ジョブは、すべての DOI の Dockerfile を解析し、DOI 間の最新依存関係を生成して https://github.com/docker-library/meta に保存します。
  3. これらのメタデータに基づき、DOI Dockerfile への PR がマージされるたびに、https://doi-janky.infosiftr.net/ でその下流 DOI(FROM しているもの)すべてが再ビルドされ、Docker Hub へ push されます。
    • ただし、定期的な無条件再ビルドは保証されません。

観察 #

  1. Docker 社の DOI は Dockerfile に RUN apt upgrade(または同等処理)を含めておらず、他の DOI ベンダーにもそれは必須化されていません。
  2. DOI ベンダーが Dockerfile に OS 更新ステップを入れていても、定期的な無条件再ビルドがなければ、セキュリティパッチ(存在する場合)は適用されません。
  3. DOI の中には、セキュリティ更新元がデフォルトで無効なディストリビューションを使うものがあります。例: docker run --rm mysql:9.6.0 tail /etc/yum.repos.d/oracle-linux-ol9.repo

したがって、現在メンテナンス中の DOI であっても、ビルド時点で CVE がないことは保証されません。よって、RUN apt upgrade(または同等処理)を含まない「実質 no-op の再ビルド」では何も修正されません。

参考: