Skip to main content

初めての依存関係の脆弱性の検出と修正

ライブラリまたはパッケージと呼ばれる、あらかじめ記述されているコードのコレクションをプロジェクトで使うことは、一般的な方法です。 これらのコード モジュールを使うと、多くの時間を節約でき、大きな再利用可能コンポーネントをゼロからコーディングすることではなく、作業の新しいクリエイティブな側面に集中できます。 これらは、プロジェクトに追加されるときは依存関係と呼ばれます。これは、それに含まれるコードに作業が依存するためです。

依存関係の使用はまったく普通のことですが、依存関係にはコードの脆弱性が含まれる可能性があり、それによってプロジェクトが安全でなくなることがあります。 幸い、Dependabot などのツールを使うと、依存関係の脆弱性を検出して、それを修正するための pull request を生成でき、将来的にそれが発生するのを防ぐことさえできます。 このチュートリアルでは、Dependabot とその機能を有効にして使用し、依存関係のセキュリティ保護を維持する方法について説明します。

最初に、依存関係の脆弱性が含まれるデモ プロジェクトをフォークしましょう。 この演習では、プロジェクトの展開は行わないため、セキュリティ リスクはありません

  1. new2code/dependabot-demo リポジトリに移動します。
  2. ページの右上にある [ Fork] をクリックします。
  3. 表示されたページで、[Create fork] をクリックします。

プロジェクトの設定が済んだので、セキュリティ保護されていない依存関係を見つけて修正を作成するように Dependabot を構成しましょう。

  1. リポジトリのナビゲーション バーで、 [Security] をクリックします。
  2. [Dependabot alerts] の行で、[Enable Dependabot alerts] をクリックします。
  3. [Dependabot] セクションで、[Dependabot alerts] の横にある [Enable] をクリックします。
  4. ポップアップが表示されたら、依存関係グラフの有効化に関する説明を読み、[Enable] をクリックします。
  5. 依存関係の脆弱性を修正する pull request を Dependabot が自動的に開くのを許可するには、[Dependabot security updates] の横にある [Enable] をクリックします。

Dependabot の構成が済んだので、どの依存関係に脆弱性が含まれているか調べてみましょう。

  1. リポジトリのナビゲーション バーで、 [Security] をクリックします。
  2. リポジトリの Dependabot alerts を表示するには、サイド ナビゲーションで [Dependabot] をクリックします。
  3. アラートに関する詳細情報を表示するには、アラートのタイトルをクリックします。 この演習では、[Command Injection in hot-formula-parser] をクリックします。

Dependabot によって依存関係に含まれるいくつかの脆弱性が特定されたので、"Command Injection in hot-formula-parser" アラートで提供される情報を細かく見てみましょう。

アラートのタイトルの下では、閉じられるアラートの数や脆弱性の場所など、この脆弱性の修正の簡単な概要を確認できます。 この例のアラートでは、hot-formula-parser パッケージをバージョン 3.0.1 にアップグレードすると、javascript/package-lock.json ファイルで特定された 1 つの Dependabot アラートが修正されることが示されています。

このセクションでは、脆弱性を修正するための pull request の作成に関する Dependabot の進行状況も追跡されます。 修正を利用できるようになると、pull request にリンクされた [ Review security update] というラベルのボタンが表示されます。

Dependabot アラートの修正概要セクションのスクリーンショット。

修正の詳細の下には、Dependabot によって提供される次のような脆弱性に関する詳細情報が表示されます。

  • 脆弱なパッケージの名前
  • 脆弱性を含むパッケージのバージョン
  • 脆弱性が修正されるパッケージのバージョン
  • 脆弱性の種類と悪用方法の詳細

Dependabot アラートの脆弱性詳細セクションのスクリーンショット。

このアラートでは、hot-formula-parser パッケージ内の parse 関数で、ユーザー入力を実行する前にその安全性が正しくチェックされていないため、攻撃者が悪意のあるコマンドを実行できることがわかります。

ヒント

脆弱性の詳細でわからないことがある場合は、その説明を Copilot Chat に求めてみてください。

最後に、ページの下部にアラートのタイムラインが表示されます。 現在のタイムラインには、Dependabot がアラートを開いたときのタイムスタンプが含まれており、脆弱性が修正されると自動的に更新されます。

Dependabot アラートのタイムラインのスクリーンショット。

プロジェクトをすばやく簡単にセキュリティ保護するため、Dependabot によって作成された修正を適用しましょう。

  1. 修正の概要が示されているアラート フィールドで、 [Review security update] をクリックします。

  2. Pull request のページで、 [Files changed] をクリックして、Dependabot の変更を確認します。 変更を確認したら、 [Conversation] をクリックして pull request の概要に戻ります。

  3. 修正を適用するには、ページの下部にある [Merge pull request] をクリックしてから、[Confirm merge] をクリックします。

    Pull request がマージされると、リンクされた Dependabot アラートが自動的に閉じられ、修正時刻がタイムラインに追加されます。

今後も安全でない依存関係を防ぐため、依存関係の新しいバージョンがリリースされたらそれを更新する pull request を Dependabot が自動的に開けるようにしましょう。

  1. リポジトリのナビゲーション バーで、 [Settings] をクリックします。
  2. サイドバーの [Security] セクションで、 [Advanced Security] をクリックします。
  3. [Dependabot version updates] の横にある [Enable] をクリックします。

デモ リポジトリで Dependabot とその機能を試したので、ご自分のプロジェクトでそれらを有効にして、依存関係の脆弱性を簡単に検出、修正、防止してください。