開発者、メンテナー、研究者、セキュリティチームは皆、世界のコードのセキュリティを担保するという役割を担っています。GitHubを利用すれば、各地の開発チームが協力して、フォークからデプロイまで、世界のソフトウェアサプライチェーンを保護できます。
GitHub Enterpriseの高度なセキュリティ機能については、以下からお問い合わせください。
CodeQLは、業界トップクラスのセマンティックコード解析エンジンです。コードをデータとして扱うGitHubの革新的なアプローチにより、セキュリティ上の脆弱性をより素早く特定します。
従来、脆弱性はセキュリティ研究者が手作業でコードを調べて発見していました。Semmleのセマンティックコード解析エンジンであるCodeQLは、強力なクエリーエンジンを使用し、コードをデータとして扱います。これまでにない規模で非常に複雑なセマンティックパターンを特定するだけでなく、時間と共によりスマートな解析が可能になります。
CodeQLは、コンパイラーの最適化に関する最新の研究とデータベース実装に対する知見を組み合わせた、宣言型オブジェクト指向言語です。そのため、セキュリティチームは他のツールが見逃すような脆弱性の検出を大規模なコードベースに対して実行できます。
業界をリードするセキュリティ研究者たちがCodeQLクエリーのパターンを公開し、世界規模でその専門知識を共有しています。CodeQLでは、亜種解析の強化に使われた数千件のクエリーが提供されるため、開発者、メンテナー、セキュリティチームは、既存のクエリーを基にクエリーを構築することも、独自のクエリーを作成することもできます。
オープンソースは世界のソフトウェアを強化します。GitHubは、セキュリティ研究者やオープンソースメンテナーがセキュリティ上の脆弱性を報告、開示するために必要なインフラを提供します。
オープンソースメンテナーは、プロジェクトのセキュリティポリシーを定め、責任を持って脆弱性を報告する最善の方法をコミュニティに周知できます。
リポジトリのSECURITY.MDファイルには、研究者やユーザーが潜在的な脆弱性を報告するために必要なものがすべて記述されています。メンテナーは、プロジェクトごとにポリシーを作成することも、1つのセキュリティポリシーをOrganization内のすべてのリポジトリに自動適用することも可能です。
オープンソースメンテナーは安全なプライベートスペースを使用して、共同で脆弱性に対処できます。GitHub内に留まったまま、協力してセキュリティを修正し、プロジェクトを利用するユーザーコミュニティにセキュリティアドバイザリを公開できます。修正内容が悪意のあるハッカーに情報が洩れることはありません。
パブリックアドバイザリを公開する前に、メンテナーはドラフトアドバイザリで脆弱性の影響について、プライベートで話し合うことができます。一時的なプライベートフォークでコラボレーションした後、エコシステム全体に警告および更新するアドバイザリを公開できます。
2019年にセキュリティアドバイザリが開始されて以来、オープンソースプロジェクトはGitHubを使ってセキュリティアドバイザリを公開し、すべての依存リポジトリに通知しています。
GitHubで、任意のパブリックリポジトリ向けのCVEを発行できるようになりました。CVEを使うと、誰でもどこからでも、GitHub Advisory DatabaseやNational Vulnerability Databaseなどの脆弱性と修正を参照できます。
GitHubはあらゆるセキュリティ上の脆弱性を確認し、影響を受けるリポジトリを特定して警告します。業界のエキスパートから脆弱性情報を入手し、そのリスクを理解して修復する必要があるプロジェクト所有者に詳細情報を提供します。
GitHubはサポートしているパッケージマネジャーのパッケージに関する脆弱性の情報を、セキュリティ研究者、メンテナー、National Vulnerability Databaseからだけでなく、リリースノートやチェンジログ、コミットの詳細情報からも取得しています。そして、全ての発見された脆弱性情報はGitHub Advisory Databaseで公開しています。
GitHubは常に、主要言語のセキュリティアドバイザリをスキャンしています。影響を受けるリポジトリのメンテナーに、深刻度や関連ファイルへのリンクといった詳細情報を記載したセキュリティアラートを送信します。
セキュリティ上の脆弱性を特定することは問題解決の半分でしかありません。GitHubなら、プロジェクト所有者は自動化されたセキュリティ更新を使用することにより、脆弱性のある依存関係をより迅速に更新できます。
自動セキュリティアップデート機能では、依存関係の脆弱性が修正されている最小のバージョンへのアップデートを行うプルリクエストを自動で作成することで、プロジェクトをセキュアに保ちます。互換性スコアはコミュニティにおけるCIの実行結果によって算出されており、メンテナーが自信を持って更新をマージするのに役立ちます。
コードを最新の状態に保つだけでは、すべての人のためにオープンソースを保護するには不十分です。GitHubはセキュリティ研究者、メンテナー、開発者と協力して、新たな脆弱性がソフトウェアプロジェクトに侵入しないよう取り組んでいます。
すべての開発者が認証情報を管理する必要があります。GitHubは、パブリックリポジトリで誤って公開されたトークンをスキャンすると、数秒以内にプロバイダーに警告します。これによってプロバイダーは、必要に応じて取り消すことや所有者に通知することができます。
認証情報を検証したサービスプロバイダーは、トークンの取り消し、トークンの新規発行、ユーザーへの直接連絡のいずれかを行います。
有効なGitHubトークンがパブリックリポジトリにプッシュされた場合、GitHubはそのトークンを取り消し、数秒以内にトークンの所有者に通知します。
トークンのスキャンは、Alibaba Cloud、Atlassian、AWS、Azure、Dropbox、Discord、Google Cloud、Mailgun、npm、Proctorio、Pulumi、Slack、Stripe、Twilioなどのトークンをサポートしています。サポート対象のトークンは常に増え続けています。
社内のセキュリティチームはSemmle LGTMを活用して、DevOpsプロセスにセキュリティを組み込むことが可能です。こうすることで全エンジニアが安全に開発できるようになり、同じ過ちを繰り返さなくなります。
複数、かつ大規模なコードベースをスキャンできます。既存のクエリーに基づいて構築し、亜種解析を自動化することにより、大規模のコードベースであってもクリティカルな脆弱性とその亜種をより迅速に検出できます。
LGTMの継続的なコード解析では、すべてのコミットが解析され、脆弱性のあるコードがチェックインされるとすぐに認識されるため、脆弱性が運用環境に持ち込まれるのを回避できます。
LGTMは、IDE、問題追跡ツール、CI/CDサービスなどとの統合を通して、開発プロセスのあらゆる段階で一貫した解析を提供します。
オープンソースプロジェクトに携わる場合でも、企業利用のために新しいツールを選ぶ場合でも、それぞれのセキュリティニーズに対応します。企業における安全な開発についての詳細は、下記からお問い合わせください。
Security Labは、脆弱性情報の開示を行っています。脆弱性の最新情報をご覧ください。また、Advanced Securityのベータ版に参加してください。
GitHub Enterprise ユーザーは、Advanced Security を利用してチームに最適なセキュリティツールを利用できます。