GitHub Security Labを発表:世界のコードをコミュニティ全体で保護

Image of Jamie Cool

オープンソースソフトウェアの安全性を維持することは、私たち全員の共同責任であり、単独で達成できることではありません。本日、GitHub Universe 2019において、GitHub Security Labを発表しました。「オープンソースのセキュリティはすべての人にとって重要である」という、私たちと同じ信念をもつセキュリティ研究者、メンテナー、企業のすべてが業界全体で連携する取り組みです。

この目標を達成すべく尽力してきた最初のパートナーの皆さんを紹介できることを嬉しく思います。私たちは、ツール、リソース、報奨金を提供するとともに、何千時間にも及ぶセキュリティの研究を行い、オープンソースエコシステムの保護を支援していきます。

本日の発表の一環として、GitHub Security Labではオープンソースコードの脆弱性を見つけるためのCodeQLを、すべての方に無料提供します。CodeQLは、世界中の多くのセキュリティ研究チームが、コードのセマンティック解析に使用しているツールです。私たちも最も人気のあるオープンソースプロジェクトの一部にCodeQLを使った結果、100件を超えるCVE(Common Vulnerabilities and Exposures)を検出しました。

また、GitHub上で作成されたアドバイザリのパブリックデータベース、GitHub Advisory Databaseを立ち上げました。このデータベースには、GitHubの依存関係グラフによって追跡される、パッケージにキュレートおよびマップされた追加データも含まれます。

セキュリティに対するGitHubのアプローチは、オープンソースのセキュリティライフサイクル全体に対応するものです。GitHub Security Labは、オープンソースソフトウェアの脆弱性を特定し、報告します。一方、メンテナーと開発者は、GitHubを使用して修正プログラムを作成し、公表に向けて調整を行い、依存関係にあるプロジェクトを修正済みバージョンにアップデートします。

GitHub Security Lab

GitHub Security Labの使命は、セキュリティ研究のグローバルコミュニティにインスピレーションを与え、世界のコードを保護できるようにすることです。GitHubのチームが、非常に重要なオープンソースプロジェクトの脆弱性を発見および報告するための常勤リソースを提供し、模範となってリードします。チームは既に、発見したセキュリティ脆弱性に対し、100件を超えるCVEを採番しています。

世界のオープンソースソフトウェアを保護することは、非常に難しい任務です。その理由として、最初に規模の問題があります。JavaScriptのエコシステムだけで、100万件を超えるオープンソースパッケージが存在しています。次に、セキュリティの専門知識の不足があり、開発者のわずか500人に1人しかいない状況です。最後に、調整の問題です。セキュリティの専門家は、世界中の何千という企業に分散しています。こうした問題を、GitHub Security LabとCodeQLによって解決します。

この取り組みには下記の企業が参加しており、オープンソースソフトウェアの脆弱性を発見、報告するための時間と専門知識を提供しています。各社がさまざまな形で貢献しており、今後も参加企業が増えることを願っています。

  • F5
  • Google
  • HackerOne
  • IOActive
  • J.P. Morgan
  • LinkedIn
  • Microsoft
  • Mozilla
  • NCC Group
  • Okta
  • Trail of Bits
  • Uber
  • VMWare

研究コミュニティに対するサポートとして、最先端のコード解析エンジンであるCodeQLを、オープンソース向けに無料で利用できるようにします。CodeQLを使用すると、データと同じようにコードに対するクエリを実行できます。脆弱性の原因となったコーディングミスを把握している場合、クエリを作成してすべての変種を見つけることができ、同様の脆弱性を永久に排除できます。CodeQLを使い始める方法については、こちらをご覧ください。

セキュリティ研究者の方、セキュリティチームに所属している方の協力を求めています。世界のオープンソースソフトウェアを保護するには、コミュニティ全体で連携する必要があります。GitHub Security Labは今後、イベントを開催し、ベストプラクティスを共有して、すべての人が参加できるようにしていきます。詳細については、Twitterのアカウント(@GHSecurityLab)をフォローしてください。

オープンソースのセキュリティワークフローを向上

世界中のセキュリティ研究者がより多くの脆弱性を見つけるようになると、メンテナーとエンドユーザには、脆弱性に対処するための、より優れたツールが必要となります。

現在、新たな脆弱性への対処は、多くの場合、その場しのぎのプロセスとなっています。オープンソースで新たに発見された脆弱性の40%は、発表時点でCVE識別子が付与されておらず、どのパブリックデータベースにも掲載されていない状態です。また、非常に重大な脆弱性の70%は、開発者への通知後30日が経過しても、パッチが適用されず放置されています。

GitHubがこうした状況を解決します。メンテナーと開発者がGitHub上で直接連携し、メンテナーの準備が整ってから新たな脆弱性が公表されるようにするとともに、開発者が迅速かつ簡単に修正バージョンへとアップデートできるようになりました。

GitHub Security Advisories

GitHub Security Advisoriesを利用すると、メンテナーは非公開スペースでセキュリティ研究者と共にセキュリティ修正に取り組み、GitHubから直接CVEを申請し、脆弱性についての詳細を特定できます。その後、セキュリティアドバイザリを公開する準備が整ったら、影響を受けるプロジェクトに対し、GitHubからセキュリティアラートを送信します。

自動セキュリティアップデート

脆弱な依存関係について通知を受け取ることは重要ですが、修正を含むPull Requestを受け取ることができれば、さらに有益となります。GitHubは、開発者が新たな脆弱性に迅速に対応できるよう、脆弱な依存関係を修正バージョンへとアップデートするPull Requestを自動で作成します。

自動セキュリティアップデート機能は、GitHub Satellite 2019でベータ版をリリースしましたが、現在は一般に公開され、セキュリティアラートが有効なすべてのアクティブリポジトリに展開されています。

トークンスキャニング

最も一般的なセキュリティにおけるミスの1つが、トークンや認証情報をプロジェクト内にハードコーディングしてしまうことです。GitHubは、コミットのプッシュ(またはリポジトリの公開)から数秒以内にスキャンして、20社のクラウドプロバイダのトークンフォーマットをチェックします。一致するトークンフォーマットが検出されると該当するプロバイダに通知が届き、プロバイダは通常、トークンを無効化して影響のあるユーザに通知するなどのアクションを実行します。本日、新たにGoCardless、HashiCorp、Postman、Tencentの4社をが、新たに追加されたパートナーとして発表しました。

GitHub Advisory Database

メンテナーがGitHub Security Advisoriesで作成したすべてのデータのほか、パッケージにキュレートおよびマップされた追加データでGitHubの依存関係グラフによって追跡可能なものを、無料で利用できるようにしました。新しいGitHub Advisory Databaseをブラウザーでぜひご確認ください。また、コメントでCVE識別子付きのレコードに直接リンクすることや、Security Advisory APIのエンドポイントを使ってデータにアクセスすることプログラムを組むことも可能です。

本日から提供が開始されたものは、GitHub Changelogから確認できます。

› GitHub Advisory Database

› Automated security updates now generally available

› Security Advisories generally available, can request CVEs

› GitHub Security Lab and CodeQL for Research announced

› GoCardless, Hashicorp, Postman, and Tencent Cloud join our token scanning program