0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dependabotを用いてリポジトリの依存関係をセキュアに保つ方法

Posted at

まず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

設定ファイル例

yaml
# .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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?