Dependency Graphとセキュリティアラート


GitHub上には何百万というオープンソースプロジェクトが存在しています。ソフトウェアを開発する場合、開発者が書いているコードはこういったプロジェクト上に属することになります。GitHubの機能であるDependency Graphやセキュリティアラートを利用することで、複雑さを増す依存関係を管理し、パブリック、およびプライベートリポジトリの両方において、コードをより安全に保つことができるようになります。
なお、Dependency Graphとセキュリティアラートは現在GitHub.comおよびGitHub Business Cloudで利用でき、オンプレミス版のGitHub Enterpriseでは利用できません。

GitHubの機能のひとつであるDependency graphでは、自分のコードがどのプロジェクトに属しているのか、または、どのプロジェクトで自分のコードが利用されているかを把握できます。この機能により、自分のレポジトリー内で依存関係にあるパッケージやアプリケーションの情報を閲覧することができます。 Dependency graphは現在RubyとJavaScript、Pythonに対応しています。

Dependency graphの詳細を見る

Dependency graphは依存関係を可視化するだけでなく、ある特定のコードにおけるセキュリティ脆弱性がCommon Vulnerabilities and Exposures (CVEs)で発表されると、そのコードがどのプロジェクトで利用されているかを監視します。脆弱性が検知されると、該当するコードを利用しているユーザーに通知し、対処方法が公開されている場合はGitHub コミュニティで共有されているセキュリティ修正方法を提案します。(セキュリティアラート)セキュリティアラートはコードのセキュリティ状態を担保するために最も重要なツールのひとつです。

セキュリティアラートの詳細を見る

セキュリティアラートを開発した際に脆弱なライブラリのリストを作成し、それをすべてのパブリックリポジトリのDependency Graphと比較しました。 その結果、50万件を超えるリポジトリに400万以上の脆弱性が存在していたので、Ruby とJavascriptのリポジトリにアラートを表示させたところ、リポジトリの所有者が依存関係を取り除くか、安全なバージョンに変更することで、45万を超える脆弱性が解決されました。それ以来、Dependency Graphやセキュリティアラートで検出された脆弱性のうち、約30%が検出後7日間で解決されています。さらに、アラートの15%は7日以内に「問題なし」と認定されるため、アラート全体の45%は1週間以内になんらかのアクションが行われていることになります。
これは、最近コントリビューションがあったほとんどのリポジトリでは、メンテナーが7日以内に脆弱性にパッチを当てていることになります。さらに、GitHubはメンテナーやセキュリティチームの役に立てるよう脆弱性に関するメールを定期的に配信しています。

セキュリティアラートの利用を開始するには


セキュリティアラートを使うことで、そのプロジェクトがプライベートでもパブリックでも、プロジェクトメンバーに脆弱性情報を通知することができます。

  • Dependency Graphを有効化する
    パブリックリポジトリでは、Dependency Graphとセキュリティアラートが自動的に有効になります。プライベートリポジトリでは、リポジトリの設定でセキュリティアラートを明示的に選択するか、リポジトリの「Insights (インサイト)」タブの「Dependency graph 」セクションで、アクセスを許可する必要があります。
  • 通知を設定する
    Dependency Graphを有効にするとセキュリティ警告が管理者に自動的に届きます。また、管理者はDependency Graphの設定画面で、セキュリティ警告の受信者としてチームや個人を追加できます。
  • 警告に対応する
    脆弱性に関する通知では、アップデートが推奨される依存関係が強調表示されます。安全性が確認されているバージョンが存在している場合は、機械学習や公開データをもとに選ばれたものが提案として表示されます。

dependecy-graph-screenshot

脆弱性情報について


現在、CVE IDが付与されている脆弱性、つまり、National Vulnerability Databaseにおいて公開されている脆弱性情報がセキュリティアラートによって提供されます。しかし、すべての脆弱性情報がCVEによって網羅されているわけではなく、公開されている脆弱性でもCVEに掲載がない場合もあります。GitHubではCVEに情報が公開されていない場合においても情報提供できるよう、セキュリティデータを蓄積し改善していく予定です。セキュリティに関するより詳細な情報は、GitHub Marketplaceに掲載されているセキュリティパートナーを確認してください。

この取組は、世界最大級のオープンソースデータを使ってより安全なプログラミングができるようにするための第一歩です。 セキュリティアラートおよびDependency graphは現在RubyとJavaScript、Pythonをサポートしています。

セキュリティアラートについて詳細を確認する

オンプレミス版を利用したい方のために


企業によってはソースコードをクラウドに保存することを懸念することもあるでしょう。GitHub Enterpriseはオンプレミスで運用できるため、GitHub.comと同じ機能を利用しつつ、クローズドネットワーク環境でプライベートポジトリを無制限に利用することができます。
また、2要素認証やSAML/LDAPなどのSSOに対応しており、ユーザーのアクセス制限を行いつつ開発時のコラボレーションを進めることが可能です。

GitHub Enterpriseについての詳細はこちら