Snyk ContainerでDockerfileをスキャンしてみる

2024.06.28

Snyk Containerでは、イメージに対してだけではなく、Dockerfileに対してもスキャンが可能です。

Scan your Dockerfile | Snyk User Docs

コンテナをBuild・Pushをする前にスキャンができるため、より早い段階で脆弱性を検知できます。

今回は、Snyk ContainerのDockerfileのスキャンを試してみました。

やってみた

Dockerfileを含んだリポジトリの用意

Snykのデモ用のリポジトリをフォークして使います。リポジトリは以下です。

snyk-japan/juice-shop: OWASP Juice Shop: Probably the most modern and sophisticated insecure web application

ちなみに、Snyk Code & Open Sourceを試してみたい場合は、このリポジトリを使う以下のワークショップがおすすめです。

snyk-japan/snyk-sca-sast-workshop

Snykにリポジトリをインポート

Snykのコンソールで作業をします。

Snyk GitHub Integrationをまだ設定していない場合は、以下を参考に設定してください。

https://docs.snyk.io/scm-ide-and-ci-cd-workflow-and-integrations/snyk-scm-integrations/snyk-github-integration

Projects -> Add projects -> GitHubの順に選択します。

Projects___Snyk

前の手順でforkしたjuice-shopにチェックをつけて、Add selected repositoriesを選択します。

Add_new_GitHub_project___Snyk

ターゲットにリポジトリが追加されていることを確認できます。

Projects___Snyk-2

スキャン結果の確認

ターゲットリポジトリ名を選択すると、各Projectで検知された脆弱性の数が確認できます。

Dockerfileを選択して、詳細を確認します。

Projects___Snyk-3

脆弱性の種類や概要、深刻度CWEといった情報が確認できます。

msato0731_juice-shop_Dockerfile___Snyk_と_Snyk_ContainerでDockerfileをスキャンしてみる_—_Content_—_DevelopersIO_—_Contentful

msato0731_juice-shop_Dockerfile___Snyk

修正対応のPull Request作成

脆弱性の検知ができたので、修正を行います。

Snykで修正対応のPull Requestを作ることができます。

Open a fix PRを選択します。

msato0731_juice-shop_Dockerfile___Snyk-2

以下のPull Requestが作成されました。

説明には、どの脆弱性を修正されるか等が記載されています。

ファイルの変更でイメージのバージョンが上がっていますね。

_Snyk__Security_upgrade_node_from_12_18_4-buster_to_12_22-buster_by_msato0731_·_Pull_Request__1_·_msato0731_juice-shop

Pull Requestをマージすると、Snyk上でもイメージのバージョンが上がっていることを確認できました。(画面上部のRetest nowから手動でテストを再実行することも可能。)

msato0731_juice-shop_Dockerfile___Snyk-4

おわりに

SnykでDockerfileスキャンをやってみました。

コンテナイメージだけではなく、Dockerfileもスキャンすることでより早い段階で脆弱性を検知することができます。

連携も簡単なのでぜひ試してみてください。

以上、AWS事業本部の佐藤(@chari7311)でした。