[小ネタ] Docker Extensions から Snyk Container を利用して Docker イメージの脆弱性スキャンを行う

Docker Extensions が GA になりました! Snyk Container も拡張機能として提供されていたため検証してみました。
2023.01.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

今回はDocker Desktop で提供されている Docker Extensions から、Snyk Container を利用して Docker イメージの脆弱性スキャンを行ってみようと思います。

Docker Extensions とは

Docker Desktop 内でサードパーティ製ツールを提供する拡張機能です。

2023-01-12にリリースされたDocker Desktop v4.16 で、 Docker Extensions はベータ版から GA になりました。今回は GA 記念に Snyk の拡張機能を利用してみようと思います。

・Extensions have moved from Beta to GA.

Docker Desktop release notes - v4.16.0

Docker Extensions の概要は以下をご覧ください。

やってみた

拡張機能のインストール

早速、拡張機能をインストールします。

Docker Desktop の Extentions から Add Extentions を選択し、検索窓に Snyk と入力します。

検索結果で表示された拡張機能の Install をクリックします。

インストールが成功すると Open ボタンが表示されます。ボタンをクリックして、拡張機能を確認してみます。

Snyk の拡張機能では、ローカルに保存された Docker イメージを Snyk Container で脆弱性スキャンする機能が提供されていました。

イメージスキャン

今回は試しに、 Nginx のイメージスキャンを行ってみようと思います。

Nginx イメージを選択して、Test image をクリックするとスキャンが開始されます。数十秒ほどでテスト結果が表示されました。

重要度順に脆弱性と依存関係がリストアップされ、より詳しい情報のリンクが記載されていますね。

docker scan との違い

Docker には、Docker イメージの脆弱性スキャンを行う docker scan コマンドが提供されています。

コマンド実態は Snyk Container が利用されているのですがテスト結果に差異がないか確認してみます。

詳しくは以下をご覧ください。

結論、同じテスト結果が表示されていました。

GUI なら Docker Extensions 、 CLI なら docker scan コマンドの使い分けができそうですね。1

docker

$ docker scan nginx

Testing nginx...

✗ Low severity vulnerability found in util-linux/libblkid1
  Description: Information Exposure
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-UTILLINUX-2401081
  Introduced through: util-linux/libblkid1@2.36.1-8+deb11u1, e2fsprogs@1.46.2-2, util-linux/libmount1@2.36.1-8+deb11u1, util-linux/mount@2.36.1-8+deb11u1, nginx-module-image-filter@1.23.3-1~bullseye, util-linux@2.36.1-8+deb11u1, util-linux/bsdutils@1:2.36.1-8+deb11u1, util-linux/libsmartcols1@2.36.1-8+deb11u1
  From: util-linux/libblkid1@2.36.1-8+deb11u1
  From: e2fsprogs@1.46.2-2 > util-linux/libblkid1@2.36.1-8+deb11u1
  From: util-linux/libmount1@2.36.1-8+deb11u1 > util-linux/libblkid1@2.36.1-8+deb11u1
  and 15 more...

✗ Low severity vulnerability found in tiff/libtiff5
  Description: Out-of-bounds Read
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-TIFF-2434417
  Introduced through: nginx-module-image-filter@1.23.3-1~bullseye
  From: nginx-module-image-filter@1.23.3-1~bullseye > libgd2/libgd3@2.3.0-2 > tiff/libtiff5@4.2.0-1+deb11u1

✗ Low severity vulnerability found in tiff/libtiff5
  Description: Resource Exhaustion
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-TIFF-2440571
  Introduced through: nginx-module-image-filter@1.23.3-1~bullseye
  From: nginx-module-image-filter@1.23.3-1~bullseye > libgd2/libgd3@2.3.0-2 > tiff/libtiff5@4.2.0-1+deb11u1

------------ 抜粋 ------------

Organization:      XXXXXXXXXXXXXXXXXXXXXX
Package manager:   deb
Project name:      docker-image|nginx
Docker image:      nginx
Platform:          linux/amd64
Base image:        nginx:1.23.3
Licenses:          enabled

Tested 143 dependencies for known issues, found 98 issues.

According to our scan, you are currently using the most secure version of the selected base image

テスト回数について

Snyk Container はフリープランの場合、月100テストまでの回数制限があるので注意です。

まとめ

以上、「Docker Extensions から Snyk Container を利用して Docker イメージの脆弱性スキャンを行う」でした!

コンテナイメージの脆弱性スキャンをより簡単に行える機能として、気軽にご利用いただけますと幸いです。

以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!

注釈


  1. Snyk でも同様に GUI ならコンソール、 CLI なら snyk container コマンドが利用できます。