GitHub Dependabotのセキュリティアラートが来たので対処してみた

2022.02.20

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、GitHub Dependabotのセキュリティアラートが来たので対処してみました。

Dependabotのセキュリティアラートが来ていた

GitHubアカウントでなにか通知が来ていたのでなんだろうと確認すると、私の管理しているRepositoryで脆弱性が見つかったという内容のものでした。通知を開いてみます。

react-amazon-chime-sdkというRepository(以前個人検証用に作成しそのまま放置していたもの)に作成されている2つのファイル対するアラートのようです。yarn.lockの方のアラートを開いてみます。(1つPRが作られているのが見えますが、一旦無視してください)

アラートを発生させたのはDependabotという機能で、url-parseパッケージでHighレベルのアラートが出ているようです。開いてみます。

NPMパッケージurl-parseのバージョン1.5.6以前にユーザー制御キーを介した認証バイパスの脆弱性があるとのことです。

Authorization Bypass Through User-Controlled Key in NPM url-parse prior to 1.5.6.

GitHub Dependabotとは

そもそもDependabotとは何なのか?というところからですが、GitHub Dependabotとは、Repository内の依存関係に含まれている既知の脆弱性を検知して、アラートやPull Requestの自動作成を行ってくれる機能です。

なるほどDependabotはもともとは別サービスだったが、Dependabot Previewを経てDependabotチームはGitHubに参加した後に、正式にGAされた流れなのですね。

Dependabot Preview has helped more than 30,000 organizations keep their packages updated with more than seven million pull requests merged since it launched. As a result of that success, the Dependabot team joined GitHub in May 2019 and started building an updated version of Dependabot directly into GitHub. Now, we’re taking the next step, migrating customers from Dependabot Preview and onto the GitHub-native Dependabot.

対処してみる

というわけで、このセキュリティアラートの対処をしてみます。

先程のアラートで[Create Dependabot security update]をクリックします。

するとセキュリティアップデートの生成が始まりました。しばらく待ちます。

Pull Requestが作成されました。(キャプチャ取り忘れで画像がClosedのものになっていますが、この時点ではOpenになっています。)

アラートが出ていたyarn.lockpackage-lock.jsonの2ファイルを合わせて更新するPull Requestのようです。

本文のCommitsを展開すると、直近のurl-parseパッケージ自体の直近のCommitが確認できます。

Pull Requestをベースブランチにマージします。

マージできました!

これにて対処完了、と思いきやなんと同じRepositoryで新しいアラート通知が発生していました(!!!!)。開いてみます。

すると次は92件のアラートが発生しています。ざっと見たところ先程対処したurl-parseとは異なるパッケージのようです。更新を行った結果、dependencyが芋づる式に脆弱性を踏んでいる感じでしょうか。

ちなみに先程の2件のアラートはちゃんとクローズとなっていました。

件数が多いため、追加のアラートの対処は追って行おうと思います。

アラート通知が来るまでの時系列

前節でもちらっと見ましたが、Dependabotが自動作成したPull Requestでは、本文で対象のDependencyの直近のCommitが確認できます。

このうち脆弱性が修正されたバージョン1.5.8のCommitをリンクから開いてみると、リリースされたのは22時間前のです。

一方でDependabotによるアラート通知が行われたのは20時間前です。

以上の時系列から、DependabotはDependencyの既知の脆弱性を検知するとその修正状況を追跡し、修正版がリリースされた時点でそのDependencyに関するアラート通知を行うみたいですね。

参考

以上