概要
docker imageに脆弱性のあるライブラリが含まれていたときの対応方法。
対処法1
個別にライブラリを脆弱性のないバージョンまでアップデートする。
例えばDockerfileに以下の処理を追加する。
ただしこれは表層的な対処法なので、可能であれば対処法2を行う。
RUN set -ex \
&& apt-get update -qq \ &
& apt-get install -y \
# fix CVE-2024-47685 linux-libc-dev 次回image更新時に削除
linux-libc-dev
対処法2
イメージを、脆弱性のないライブラリを含むバージョンまでアップデートする。
その際に、マイナーバージョンを上げるだけで済みそうなのであれば、マイナーバージョンをMaxまであげるとよりいい。
例えば、6.1.99-1のlinux-libc-devが使われており、それはCVE-2024-47685に引っかかっているとする。
その場合まず、どのイメージでこのライブラリが使われているかを明確にする。
例えばDockerfileが以下のようであった場合、nodeとrubyでlinux-libc-devが使われている可能性がある。
FROM node:22.10.0-slim
FROM ruby:3.3.4-slim
それぞれのイメージをDockerHubで検索し、使用しているバージョンのページに行き、Packagesの箇所にライブラリの名前をいれて検索 or VulnerabilitiesにCVEの番号を入力して検索(CVEで検索してもでない場合があるので、今回の場合はライブラリ名で検索するのが安全)。
以下のようにruby:3.3.4-slimで使用していることがわかった。
パッチバージョンを上げるだけで済むのであれば、基本的にパッチバージョンを最大まで上げる & 既存の機能に影響がでないことを確認 & 軽く動作確認してリリースすればいい。
メジャー、マイナーバージョンを上げる必要がある場合は、必要に応じた分だけバージョンをあげて、適切に影響範囲等に対して対応すればいい。
今回の場合は、3.3.5以上にすれば問題は解消するが、ruby3.3系で最新のバージョンは3.3.6なので、3.3.6まであげる。
FROM node:22.10.0-slim
FROM ruby:3.3.6-slim