まずDependabotとは
一言で言うと、GitHubのリポジトリ内で使用しているライブラリに関して現在、または今後報告されるバグや脆弱性があった場合に、プルリクエスト形式等で教えてくれるボットです。
具体的には、監視用の.github/dependabot.ymlファイルを用意し、その中に、どれくらいの間隔で(依存関係による)脆弱性をチェクするのか、どのライブラリを監視するのか等を記載しておくことで、定期的にボットがそのライブラリとCVE(Common Vulnerabilities and Exposures、日本語では共通脆弱性識別子と呼ばれるOSSごとの脆弱性を記録した識別)とを見比べて、問題がないかをチェックします。
項目 | 内容 |
---|---|
提供元 | GitHub(Microsoft) |
主な目的 | 依存パッケージの更新通知・自動Pull Request作成 |
サポート言語 | npm, pip, Maven, RubyGems, Cargo, Go modules など多数 |
通知の種類 | 新バージョンのリリース、セキュリティアドバイザリー(GitHub Advisory DB)と連携 |
CVEについて
CVE自体は脆弱性の識別子(名前)です。
脆弱性のタイプや深刻度によって分けられています。CVEをまとめたものに、下記があります。
1️⃣ NVD(National Vulnerability Database)
アメリカ政府(NIST)が運営する公式CVE集約DB
2️⃣MITRE CVE List(cve.org)
CVEのID発行元であるMITREの公式リスト
3️⃣GitHub Advisory Database
GitHub上のOSSパッケージ向けのCVE+詳細アドバイザリを収録
4️⃣Snyk Vulnerability DB
Snyk社が運営する商用レベルのCVE+独自脆弱性DB
設定ファイル例
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "pip"
directory: "/" # requirements.txt のある場所
schedule:
interval: "weekly"
Dependabot Alertで脆弱性を通知
これは、GitHub リポジトリで使っている依存パッケージにCVEなどの脆弱性が見つかったときに、自動で通知してくれる機能です。
GitHub の「Security」タブ内で、どのパッケージのどのバージョンに、どんな脆弱性があるかを一覧表示できます。
どんなときに表示されるの?
あなたのプロジェクトで使っているパッケージにGitHub Advisory Database(+CVE)に登録された脆弱性が該当するときにGitHub が自動で通知を作成
どこで見れる?
対象の GitHub リポジトリを開く上部メニューの「Security」をクリック.
左側メニューの「Dependabot」→ 「Dependabot alerts」を開く
表示される情報(Alert 内容)
項目 説明
パッケージ名 例:lodash、urllib3、log4j など
影響バージョン 例:< 4.17.20(このバージョン未満は脆弱)
CVE番号/Advisory 例:CVE-2021-44228 や GitHub Advisory のリンク
深刻度 CVSSスコアや「Low」「Medium」「High」「Critical」などの区分
詳細リンク GitHub Advisory DBへのリンク
対応状況 修正バージョンへの自動PRが出ているか/未対応か
修正方法は?
脆弱性が発見されると、GitHubが自動で次のようなことをしてくれます.
自動Pull Requestを作成(Dependabot PR)
→ 修正バージョンにアップグレードした package.json / requirements.txt などを含む
CIが通ればそのままマージすれば OK
おすすめの記事
Docsの解説
Docs