見出し画像

コードに潜むセキュリティリスクを早期発見する GitHub Advanced Security の紹介

こんにちは!SHIFT DAAE(ダーエ) 開発グループ所属の白木です。

日々の開発で使っている GitHub ではコードの管理だけでなく、セキュリティリスクを検出・修正するための GitHub Advanced Security と呼ばれる機能が提供されています。

セキュリティリスクは発見が遅れるほど対応に必要なコストが増えていくためリリースする前の開発フェーズでセキュリティリスクを検出・修正することが重要になってきます。

セキュリティリスクの早期発見は良いプロダクト作りに直結するので
GitHub Advanced Security を使うことで安心して開発ができるといいなと思い、今回は GitHub Advanced Security の主要な機能を紹介します!


GitHub Advanced Security を使うためには

GitHub Advanced Security は以下のいずれかの環境で利用できます。

  • パブリックなリポジトリ

  • GitHub Enterprise Cloud

  • GitHub Enterprise Server(3.0 以降)

GitHub Advanced Security は何を提供しているのか

GitHub Advanced Security は大きくわけて 2 つのセキュリティリスクの検出をする機能を提供しています。

  • 依存関係になっているコードに対するセキュリティリスク

  • 実装したコードに対するセキュリティリスク

依存関係になっているコードに対するセキュリティリスク

Dependency Review

Dependency Review はマニフェストファイルに定義され依存関係になっているコードに対するセキュリティリスクを検出する機能です。JavaScript はpackage.json、Python であればrequirements.txtがサポートされています。

Pull Request でマニフェストファイルに変更があれば、変更対象にセキュリティリスクがないかのチェックが行われ、もし セキュリティリスクが発見された場合はDpendency Reviewの CI Job が失敗します。

出典: GitHub scans pull requests for known vulnerabilities

Security Overview

Security Overview は Organization 配下の全リポジトリで検出されたセキュリティリスクをまとめて確認できる機能です。
Organization に存在しているセキュリティリスクの重要度ごとの割合そもそもセキュリティリスクの検知が有効になっていないリポジトリの確認など、管理者として全体を見たいときに重宝します。

出典: GitHub Advanced Security: Introducing security overview beta and general availability of secret scanning for private repositories

実装したコードに対するセキュリティリスク

Code Scanning

Code Scanning は静的解析によって実装したコードに対するセキュリティリスクをチェックする機能です。 GitHub Actions の Job として動作するため GitHub Actions と同じトリガーでの起動が設定可能になっており、他の CI Job と同様に feature ブランチに Push するたびに実行することで高頻度でセキュリティリスクの検出が可能です。

静的解析に使用する解析エンジンは変更が可能で、ESLint や Container Canner など環境にあった解析が実施できます。

Secret Scanning

Secret Scanning はコードの中にアクセストークンやパスワードなどのクレデンシャル情報が含まれていないかチェックする機能です。
デフォルトで検知される対象は AWS の Secret Access Key や Slack の API Token などがあり、パブリッククラウドから SaaS まで広くカバーされています。正規表現を使って検知対象の文字列をカスタム定義することも可能です。

クレデンシャル情報が含まれる Push を検知した場合は「Push を受け付けてアラートをあげる」もしくは「Push を拒否する」のどちらかの設定が可能です。

出典: Protecting pushes with secret scanning

Q&A

GitHub Advanced Security について調べていく中で、疑問に感じたことを Q&A 形式でまとめました。

Q. Dependency Review でサポートされている言語・マニフェストファイルの形式は?

A. Supported package ecosystems を参照してください。

Q. Code Scanning でサポートされている言語・フレームワークは?

A. Supported languages and framework を参照してください。

Q. Code Scanning でセキュリティリスクの発生頻度や内容の集計・分析は可能?

A. GitHub の機能としてはないですが、セキュリティリスクが入ったコミットは特定可能なので API を使うことで可能です。

Q. Secret Scanning で Push を受け入れた後に履歴を消したい場合は?

A. GitHub の機能としてはないですが、 git で履歴の削除をすることで可能です。

Q. Code Scanning でモバイルアプリ(iOS, Android)向けの解析は可能?

A. 現時点ではサードパーティーの解析エンジンを使うことで可能です。
開発ロードマップに SwiftKotlin のサポートはすでに載っていて Kotlin は数ヶ月以内(Q3 2022 – Jul-Sep)に beta バージョンが出る予定です。

まとめ

GitHub Advanced Security の 4 つの機能と、調べていく中で気になったことを Q&A 形式で紹介しました。
セキュリティリスクの検出を開発プロセスに組み込むことで、安心して使えるプロダクトをこの世界に増やしていきたいです。

\もっと身近にもっとリアルに!DAAE公式Twitter/


執筆者プロフィール: Shoya Shiraki
ソフトウェアエンジニアとしてソーシャルゲーム開発、スタートアップでのCTO経験を経てSHIFTに入社。 「テクノロジーを人に最適化する」をモットーに、日々楽しんで開発しています。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!