GitHub Universe 2024、GitHub自体の開発に使われているセキュリティプラクティスを解説
GitHub Universe 2024から、GitHubのCSOであるMike Hanley氏が登壇した「Securely Building GitHub on GitHub」というセッションを紹介する。これはデベロッパー向けのプラットフォームであるGitHub自体の開発において、セキュリティをコーディングの段階から組み込むことでソフトウェア自体の脆弱性を減らし、シフトレフトを実現していることを解説する内容となった。
動画は以下のリンクから参照されたい。
●動画:Securely building GitHub on GitHub
Hanley氏は「ソフトウェア開発とセキュリティは同義語である」と語り、デベロッパーであってもコーディングにおいて常にセキュリティを意識する必要があることを強調した。そしてGitHub上には5億1800万に達するソースコードリポジトリが存在し、そのコードを守るためにもまずGitHub自体がセキュリティをコーディングに組み込む必要があったことを語った。
これはまた、2023年から約25%の増加率で着実にGitHubの成長が持続していることも示している。
そしてGitHubのデベロッパーがソースコードを書いて実装するまでのフローを示し、どこの部分にセキュリティが組み込まれているのかを社内のエンジニアに説明させる流れに移った。
最初の2つのプロセス、ソースコードのコミットとプルリクエストの作成の段階ではRepo Rules、Branch Protection、Push Protectionなどの機能が用意されているが、Repo Rulesにおいては設定したルールをバイパスする機能を紹介。
ルールについてはあらかじめ定義されたルールのひな形、レシピと呼ばれるテンプレートを利用することも可能であると説明した。
これらの機能のベースとなっているSecret Scanning、Code Scanning、Copilot Autofix、Dependabotなども簡単に説明された。Autofixについては他の機能よりも強く訴求するために、実際にGitHubのソースコードを用いてデモを見せた。ここではファイルをアップロードするような場合に、悪意のあるコードが挿入されることを防ぐためのコード修正をAutofixが生成する部分を解説した。
次に登壇したGitHubのセキュリティリサーチグループのシニアディレクターが解説したのもAutofixだ。まずは新規にコードを書く場合にAutofixが脆弱性をなくすコードを生成するデモを見せた。ここでもファイルのアップロードに関するコードに脆弱性が発生することを見せて、外部からの入力がソフトウェアに害を及ぼすことを例として紹介した。同様に既存のソースコードについてもAutofixによってセキュアなコードに改善できることも紹介。またGitHubにもレガシーなコードが存在すると説明したが、これはエンタープライズ企業からの参加者に向けたメッセージといえるだろう。
GitHubのデベロッパーは業務の半分の時間をAutofixの提案を使うことに費やしていると説明し、社内のデベロッパーがAutofixの最大のユーザーであることを説明した。そしてAutofixがオープンソースリポジトリにおいて無償で利用できるようになったと語り、ここでもオープンソースコミュニティを重要視していることを示した。
またオープンソースコミュニティのデベロッパーもAutofixを使うことで脆弱性の改修率が47%から98%に向上したことも併せて説明した。
最後に登壇したスタッフエンジニアは、リポジトリに対するスキャニングの状況を可視化するスコアカードを紹介し、リポジトリのソースコードがシークレットスキャニングなどによってどれくらいチェックされているのかが一目でわかるグラフィカルなインターフェースを説明。
またSecurity Campaginsと呼ばれる機能ではリポジトリに存在するコードにおいて、デベロッパーが明示的にAutofixを使わなくても自動的にAutofixが修正を提示する機能を紹介。ここではデベロッパーとその管理者であるマネージメント層が脆弱性改修の状況をスプレッドシートにまとめることなくGitHubの中で確認できることをデモで見せた。
Entitlementsという機能ではアクセスコントロールについて解説。これはGitHubにおけるアクセス制御を行うソフトウェアで、オープンソースとして公開すると説明。そしてチームメンバーにアクセスを許可するためのプルリクエストの実施するデモを行った。このセッションの最初の登壇者であるMike Hanley氏が最後に再登壇した際に、GitHub Mobileを使ってそのプルリクエストを承認するところまでがデモとなっていたが、余りにもさり気なさ過ぎたために気づかれにくい点が欠点と言えば欠点だったかもしれない。
全体的に見ると、デベロッパーがセキュリティをコーディングに組み込むという目的に対してAutofixが至る所に出現し、支援するという発想で設計されていることがわかる。また修正の状況も可視化されているところがポイントだろう。チームで開発を行う際にアクセス権限をどうやって管理するのかについても、実際にGitHub開発の経験が活かされているように思われる。脆弱性の抑止、不要なアクセスの削減と状況に応じて最低限のアクセスを許可する仕組みなど、GitHubの開発がシフトレフトされていることがよくわかるセッションとなった。そしてGitHubとしてはこれらの機能を訴求することで、より多くのエンタープライズ企業向けにソフトウェア開発をGitHubの上で行ってほしいという真のメッセージを感じさせるセッションとなった。