GitHubの依存関係インサイトを利用したオープンソースのセキュリティ対策

Image of Cory Dobson

今日のソフトウェア開発はオープンソースなくして進めることは不可能に近い一方で、多くの企業がオープンソースやオープンソースの依存関係に関するセキュリティ対策を難しいと感じています。オープンソースのCVEの管理、オープンソースソフトウェア(OSS)ライセンスの遵守、または使用中の依存関係バージョンの追跡を行うだけで、多くの時間を浪費するだけでなく、セキュリティチームが脆弱なOSSコードのリスクを手動で管理しなければならないこともあります。

GitHubの依存関係インサイトなら、オープンソースの依存関係の概要をひと目で把握でき、こうした課題を解決することができます。

オープンソースの使用状況の把握

まず、GitHubの依存関係インサイトは、Organization内のリポジトリ全体のOSSの依存関係をすべてコンパイルします。このビューにはさまざまなフィルタリングオプションが用意されており、依存関係エコシステム、ライセンスタイプ、ユーザーが属している特定のGitHub Organizationなどでデータを絞り込むことができます。

このオープンソースの依存関係データは依存関係グラフから取り込まれ、JavaScript、Ruby、Python、Java、Scala、PHP、および.NETに対応しています。

オープンソースライセンスのコンプライアンス

OSSライセンスのコンプライアンスを理解し、維持することも、OSSの依存関係を把握するのと同じくらい困難な問題になっています。

GitHubの依存関係インサイトでは、使用中のOSSライセンスをすべてコンパイルし、ヒストグラムと併せて表示することで、リポジトリ内の各ライセンスタイプの使用頻度に関する分析結果を表示できます。これにより、所有しているすべてのOSSライセンスを簡単に確認し、ビジネスに新たなリスクをもたらす可能性があるライセンスの利用を避けることができます。

GitHubセキュリティアドバイザリ

依存関係インサイトに表示される1ページ目の情報を見ることで、OrganizationのOSS依存関係のより詳細な情報を把握することが可能です。ただしこのページだけでは、依存関係インサイトが提供できる関連のオープンソースセキュリティ情報まではカバーしていません。

[Insights]ビューでGitHubセキュリティアドバイザリを堀り下げ、該当する脆弱性の問題に関して調べることができます。たとえば、このビューの左上で高リスクの脆弱性に関するアドバイザリをクリックすると、依存関係のリストが更新され、高リスクな依存関係バージョンと、各パッケージに関連するアドバイザリの数が表示されます。

この情報を見ることで、セキュリティチームはまず最も深刻なセキュリティの修正に対して優先順位をつけることが可能になり、開発者は特定のパッケージバージョンがどの程度安全であるかをより詳細に把握することができます。

脆弱な依存関係バージョンの表示

セキュリティアドバイザリのリストにある特定の依存関係をクリックすると、依存関係の概要ページが表示されます。

このページでは、その依存関係で何が行われるのか、CVEの影響を受ける依存関係のバージョン、メンテナーからの最新のアップデートを確認することができます。さらに、この情報を使用してオープンソースセキュリティをさらに一歩掘り下げて、どのリポジトリがこの脆弱なバージョンの依存関係を使用しているかを確認することもできます。

脆弱性リスクの修正

以下に示した例では、所有しているリポジトリが、コード内で参照しているDjangoの依存関係バージョンのさまざまなCVEに対して脆弱であることがわかります。

このリポジトリに移動すると、Dependabotから自動的に生成されたPull Requestが表示され、この脆弱なバージョンを修正するよう推奨します。

GitHubがコード内の脆弱な依存関係を検出すると、Dependabotはそれを修正するためのPull Requestを作成します。こうした自動Pull Requestには、OSSコントリビュータからのリリースノート、変更ログのエントリ、Gitコミットなど、脆弱性の修正に必要なすべての情報が含まれます。Dependabotは各Pull Requestの互換性スコアも計算し、このPull Requestをマージすることで互換性を破る変更がプロジェクトで発生する可能性があるかどうかを知らせてくれます。

この例では、Dependabotは高い互換性スコアを算出しています。また、添付されているOSSコントリビュータからのリリースノートにより、自信を持って変更をマージし、存在するCVEリスクを修正することができます。

わずか数回のクリックで、GitHubの依存関係インサイト、セキュリティアドバイザリ、Dependabotを使用して、Organization内の7,000以上のOSS依存関係からOSSセキュリティ脆弱性を絞り込んで修正できます。

安全なソフトウェア開発のために

本ブログで紹介した各機能は、以下のサイトで詳細を確認することができます。

ホワイトペーパー:GitHubで行う、OSSのセキュリティ対策

GitHubでは、企業における安全なソフトウェア開発を進めるためのソリューションを提供しています。ご相談がある場合は、GitHub営業担当にお問い合わせください。