GitHub記事タイトルとURLをコピーするこんにちは。アプリケーション部の兼安です。前に脆弱性検知のブログを書かせていただきました。blog.serverworks.co.jpその時に作った検証用リポジトリでGitHubのDependabotをONにしていたところ、2024年1月になってパッケージの脆弱性を検知してくれました。偶然の産物ですがせっかくなので、脆弱性の検知から解消までの流れを書かせていただきます。脆弱性の検知と解消のノウハウを探されている方GitHubのDependabotが通知してくれた内容こちらの件名のメールが届きました。xxの部分は日付です。xxこのメールが2024年が1月12日から、毎日9時ごろに届いていました。本文には脆弱性の内容が記載されていました。GitHubのDependabotからのメールjinja2に脆弱性があるとのことです。書かれているCVEで検索してみると、確かに脆弱性の情報がHITします。CVE-2024-22195対処法はjinja2を3.1.3にアップデートすることのようです。リンク先の脆弱性ページには、情報を公開した日付も書かれています。Date:01/10/2024メールが最初に届いたのが2024年が1月12日の9時です。時差を考えると、情報が公開されてすぐに検知してくれたようですね。graphをONにするついでに、DependabotもONにしていたからですね。それぞれの使用方法はGitHubのドキュメントに記載されています。docs.github.comdocs.github.comGitHubのリポジトリの設定画面で、DependabotがONになっているのを確認できます。graphも依存関係が表示されているので、ONになっているとわかります。graphの画面上でも脆弱性の存在が確認できました。graphに表示させているからです。Trivyもきちんと今回のjinja2の脆弱性を検知してくれています。脆弱性を解消してみるでは、ここから脆弱性を解消してみます。ターゲットのリポジトリはPythonのFlaskを使用した非常に簡単なWebアプリケーションです。PipfileとPipfile.lockの確認パッケージは、PipfileとPipfile.lockで管理しています。Pipfileを確認してみます。"3.11"脆弱性が検知されたjinja2の記述はありませんでした。いうことは、jinja2を直接インストールしておらず、他のパッケージの依存関係としてインストールされていると予想されます。次に、Pipfile.lockを確認してみます。以下の記述を見つけました。(省略)defaultの下にjinja2が記載されています。バージョンが3.1.2なので、問題はここですね。これだけだと何のパッケージの依存関係としてインストールされているのかわかりません。graphコマンドを実行してみます。graph次の結果が確認できました。Flaskに依存していることがわかります。2.1.3](省略)脆弱性の大元のパッケージをアップデートjinja2は、Flaskの依存関係としてインストールされていることがわかりましたので、Flaskをアップデートしてみます。jinja2としても、jinja2はPipfileに記載されてはいないので通りませんでした。アップデートの結果、Pipefile.lockのjinja2のバージョンが3.1.3に変わりました。割愛しましたが、Flaskのバージョンも少しあがっているのが確認できました。jinja2で単体でアップデートかけるのもなくはないかなと思います。この状態をずっと続けるかどうかは議論すべきとは思いますが。graphで確認できました。画像は、jinja2が下の方に移動していたので、検索でjinja2だけ絞り込んで表示しています。先ほどjinja2が上に表示されていたのあは、脆弱性があるバージョンだったからですね。通知が来なくなったことを確認この状態で翌朝様子をみたところ、脆弱性の通知メールが届かなくなったのを確認しました。graphで依存関係を確認して、アップデートすることで解消できる検知機能を活用して、安全なアプリケーションを開発していきましょう。サーバーワークスでは、開発プロセスの最適化を支援するサービスを提供しています。今日も明日も修行中です。2009-引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。