GitHub のリポジトリジャッキングからプロジェクトを保護する方法

GitHub のリポジトリジャッキングは、開発者にとって現実的なリスクであることがますます明らかになっています。ハッカーは、悪意のあるファイルが依存関係としてコードを使用するアプリケーションによってフェッチされることを期待して、古いリポジトリ名をハイジャックすることで、GitHub の名前を変更するユーザーや企業を利用できます。

そのため、最近ユーザー名を変更した場合や、他のリポジトリを依存関係として参照している場合は、GitHub プロジェクトを保護するための措置を講じることが重要です。

リポジトリジャッキングとは?

GitHub のリポジトリジャッキングは、リポジトリの所有者がユーザー名を変更した後に発生する可能性のある一種の悪用です。古いユーザー名とリポジトリ名の組み合わせが利用可能になり、リポジトリジャックはユーザー名を主張し、同じ名前のリポジトリを作成することでその依存関係を利用できます。

リポジトリジャッキングは、2 つの異なるタイプのリスクをもたらす可能性があります。

  • リポジトリジャッキングは、信頼できるはずのアプリケーションを信頼できなくする可能性があります。GitHub リポジトリを依存関係として使用するアプリケーションを使用し、所有者がリポジトリの名前を変更した場合、アプリケーションを使用すると脆弱になります。
  • リポジトリジャッキングは、開発中のアプリケーションを危険にさらす可能性があります。GitHub リポジトリを依存関係として参照し、リポジトリの名前が変更されたときにそれに気付かず、または更新しなかった場合、アプリケーションはリポジトリジャッキングの悪用に脆弱になります。

リポジトリジャッキングはユーザーにとって大きなリスクをもたらすものではありませんが、深刻なサプライチェーン攻撃のメカニズムとして機能する可能性があると考えられる正当な理由があります。アプリケーションにリポジトリジャックされたリポジトリを参照する依存関係がある場合、マルウェアが含まれる可能性のあるリポジトリジャックからコードを呼び出して受信します。

GitHub で開発する場合は、ハイジャックされたリポジトリであることと、依存関係を持つサードパーティであることの両方において、サプライチェーン攻撃とリポジトリジャッキングのリスクを最小限に抑える方法を知ることが重要です。

リポジトリジャッキングのリスクを最小限に抑える方法

リポジトリジャッキング攻撃は、非常に予測可能なメカニズムに依存しています。ハイジャック犯は、未請求のリポジトリを制御し、依存関係として参照するアプリケーションを利用します。幸いにも、これによりリポジトリジャッキングは簡単に防ぐことができます。

リポジトリのプライベートクローンを作成する

リポジトリをクローンすることは、プロジェクトの依存関係に関連するリスクを最小限に抑えるための優れた方法です。プライベートコピーを完全に制御できるからです。GitHub で説明されているように、ベアクローンを作成し、ミラープッシュすることで、パブリックリポジトリのプライベートコピーを作成できます。

プロジェクトの依存関係を注意深く追跡する

面倒を避け、パブリックリポジトリを参照することを好む場合は、プロジェクトの依存関係を頻繁に監査する必要があります。依存関係のステータスを年に数回チェックするだけで、多くても 1 時間もかかりません。また、多くのストレスが軽減されます。

アカウント名の変更を再考する

理想的には、ユーザー名を最新の状態に保つことは、何の心配もありません。しかし、リポジトリジャッキングのリスクを考えると、古い名前を保持することを検討する必要があります。ユーザー名を変更する必要がある場合は、別のアカウントを登録して、古い名前を主張して予約する必要があります。

外部リソースを賢く利用する

依存関係は、アプリケーションにサードパーティのアクセス ポイントを作成するため、本質的にリスクをもたらします。通常は節約できる時間に見合う価値がありますが、プロジェクトの依存関係を定期的に監査することが重要です。また、SSH 認証を使用するなど、他のセキュリティ対策を講じて、悪用を防ぐ必要があります。