GitHubのセキュリティ機能:2020年のハイライト

Image of Jamie Cool

私たちはGitHubのセキュリティ製品で大きな進歩を遂げてきました。ここでは、2020年のGitHubセキュリティのハイライトをご紹介します。

CodeQL: Gitをプッシュするたびにセキュリティレビューを実行

コードスキャンは、コードにセキュリティ上の問題がないかどうかをスキャンし、その結果を開発者のワークフローに統合します。セキュリティ解析は、プッシュごと、プルリクエストごとにスケジュールを組んで実行したり、アドホックに実行したりすることができます。GitHubのCodeQL解析エンジンを活用し、アプリケーションのデータフローをトレースして脆弱性を特定します。これにより、SQL インジェクションやクロスサイトスクリプティング、リモートコード実行など、コードの奥深くに潜むセキュリティ問題を発見することができます。また、静的分析、開発者のセキュリティトレーニングコードとしてのインフラストラクチャ、コンテナスキャンなど、GitHub内で必要なツールを利用できるように、十数種類のパートナーツールを統合しています。

2020年初頭のベータ版リリース以降、コードスキャン結果のAPIを追加し、サードパーティのCI/CDツールのサポートを追加し、GitHub Enterprise Cloudでコードスキャンを利用できるようにしましたが、GitHub Enterprise Server 3.0でも同様のことを行う予定です。

また、コードスキャン分析をより速く、より良いものにするために、CodeQL エンジンの改善を続けてきました。例えば、コンパイルされた CodeQL クエリは 90% のスペースを削減し、すべての言語のライブラリやフレームワークのサポートを改善しました。CodeQL クエリを書いて実行するための VS Code 拡張機能には、AST ビューアと定義へのジャンプ機能が追加されました。さらに、OpenSSF CVE Benchmark プロジェクトにも貢献し、OSSとして公開しています。

シークレットトークンのスキャン:十数種類の新しいタイプのトークンのほか、プライベートリポジトリやZIPアーカイブに対応

シークレットスキャンは、既知のシークレット形式が公開されていないかリポジトリを監視します。パブリックリポジトリについては、トークンが流出した場合には以前から通知していましたが、今年はプライベートリポジトリの対応しました。プライベートリポジトリのシークレットスキャンはすでにGitHub Enterprise Cloud上でベータ版として開始しており、今後、GitHub Enterprise Server 3.0でもベータ版をリリースする予定です。また、シークレットスキャンの結果をより簡単に解決できるAPIも追加しました。

Adafruit、SamsaraShopify、MessageBird、Dynatrace、SSLMate、Frame.ioClojars、Mailchimp、Finicity、PlivoDopplerなどの新しいパートナーからのトークンに対応し、合計33社のトークンスキャンパートナーに対応しています。また、ZIPファイル内のトークンをスキャンする機能も追加しました。

Dependabotで依存関係を安全かつ最新の状態に保つ

Dependabotは、脆弱性がない場合でも依存関係を更新し続ける自動Pull requestです。依存関係を定期的に更新するということは、脆弱性がある場合など、重要なときに実際に更新できることにつながります。この機能を有効にするには、リポジトリにある dependabot.yml 設定ファイルをチェックしてください。

ベータ版リリース以降、GitHub ActionsのワークフローRuby (bundler) vendoringgolang vendoring、そしてプライベート git リポジトリの依存関係にも対応しました。

脆弱性が検知されると、DependabotアラートとDependabotセキュリティアップデートがアラートを通知し、脆弱性のある依存関係の自動修正を提案します。DependabotのPull requestをレビューする担当を割り当てアップデートができない場合はその理由についての明確なエラーメッセージを取得し、通知を受け取る数を減らして、深刻度の高い脆弱性と重要度の高い脆弱性のみに通知を送信することで、最も重要なものに集中できるようになります。

依存関係のレビューは、脆弱な依存関係の導入を防ぐ

依存関係のレビューでは、導入する前に依存関係を簡単に理解することができます。Pull requestの一部として、どのような依存関係を導入、変更、削除しているのか、その脆弱性、公開されてからの年数、使用状況、ライセンスに関する情報を確認することができます。依存関係のレビューは、すべてのパブリックリポジトリと、GitHub Enterprise Cloud の Advanced Security のユーザーにベータ版で提供されています。

GitHub Advisory Databaseがnpmに対応

GitHub Advisory Database には、メンテナーや National Vulnerability Database のようなサードパーティの情報源によるセキュリティ脆弱性のキュレーションされたリストが含まれています。GitHub が npm を買収した後、私たちはすべての npm アドバイザリー情報も取り込み、エコシステム全体のアドバイザリー情報を提供しています。

メンテナにとっては、リポジトリのセキュリティ勧告を提出してCVEを取得することがこれまで以上に簡単になりました。勧告の編集履歴を維持し、問題の発見に協力してくれた人に謝意を掲載することができるようになりました。

すべての機能を利用してみてください!

これらの新しいセキュリティ機能をより使いやすくするために、リポジトリレベルでの有効化を簡素化し、リポジトリ全体のOrganizationレベルで機能を有効化できるようにしました。

依存関係グラフ、Dependabotアラート、Dependabotセキュリティアップデート、Dependabotバージョンアップデートは、環境を安全に保つための無料ツールです。コードスキャン、シークレットスキャン、依存関係レビューは、パブリックリポジトリでは無料で利用できます。プライベートリポジトリで使いたい場合は、GitHub EnterpriseのオプションGitHub Advanced Securityを購入することで利用できます。GitHubのセキュリティ機能についてはこちらをご覧ください。

最新のセキュリティ機能やリリースについては、GitHub Changelog を参照してください。また、GitHub の製品ロードマップもチェックしてみてください。