[開発者向け]GitHubはOSSサプライチェーンをどう守るのか?71プロジェクトを支援した基金の成果

目次

はじめに

 現代のソフトウェア開発において、オープンソースソフトウェア(OSS)は不可欠な基盤となっています。しかし、2021年12月に発覚した「Log4j」の脆弱性問題が示したように、広く使われている一つのライブラリに存在する問題が、世界中のシステムに影響を及ぼす「ソフトウェアサプライチェーンリスク」という課題も浮き彫りになりました。多くの重要なOSSが、資金やリソースが限られたボランティアによって維持されているという現実があります。

 本稿では、この課題に対応するためGitHubが立ち上げた「GitHub Secure Open Source Fund」の取り組みについて解説します。

参考記事

要点

  • GitHubは「Secure Open Source Fund」を設立し、重要なOSSプロジェクトのセキュリティ強化を資金面と技術面から支援している。
  • このプログラムは、資金提供、専門家による教育、ツール提供を組み合わせた3週間の集中スプリント形式である。
  • 最初の2セッションで参加した71のプロジェクトは、1,100以上の脆弱性修正、50以上の新規CVE(共通脆弱性識別子)発行、シークレット情報の漏洩防止など、測定可能な成果を上げた。
  • 支援対象はAIフレームワーク、Webフレームワーク、DevOpsツールなど多岐にわたり、ソフトウェアエコシステム全体のリスク低減に貢献している。
  • プログラム成功の鍵は、短期集中の期間設定、実践的な学習内容、そしてメンテナ(開発・保守担当者)間のコミュニティ形成にある。

詳細解説

なぜ今、ソフトウェアサプライチェーンのセキュリティが重要なのか?

 まず前提として、「ソフトウェアサプライチェーン」とは、ソフトウェアが開発され、ユーザーに届くまでの全ての構成要素(ライブラリ、ツール、プロセスなど)の流れを指します。料理で例えるなら、最終的な料理(完成したソフトウェア)だけでなく、その材料(ライブラリ)、調理器具(開発ツール)、レシピ(開発プロセス)の全てが含まれます。

 この「材料」の多くがOSSです。もし、広く使われているOSSライブラリに脆弱性(セキュリティ上の欠陥)が見つかると、そのライブラリを利用している全てのソフトウェアが危険に晒されます。これがサプライチェーンリスクです。Log4jの問題は、まさにこのリスクが現実化した例であり、一つのコンポーネントの安全性が、エコシステム全体の安全性に直結することを示しました。

GitHub Secure Open Source Fundの仕組み

 この課題に対処するため、GitHubは「GitHub Secure Open Source Fund」を立ち上げました。これは単なる資金提供プログラムではありません。以下の要素を組み合わせた、実践的なセキュリティ強化プログラムです。

  • 期間: 3週間の集中スプリント形式で実施。その後12ヶ月間のエンゲージメントが続きます。
  • 資金提供: 各プロジェクトは、プログラムへの参加とマイルストーン達成に応じて、合計10,000米ドルの資金をGitHub Sponsors経由で受け取ります。
  • 教育とメンターシップ: GitHub Security Labの専門家やパートナー企業のエキスパートが、週ごとのテーマ(OSSセキュリティの基礎、脅威モデリング、脆弱性管理など)に沿ってトレーニングを実施します。
  • ツールとリソース: 静的コード解析ツールであるGitHub CodeQLや、クラウドインフラ用のAzureクレジットなどが提供され、すぐにプロジェクトに導入できます。
  • コミュニティ: セキュリティ意識の高いメンテナが集まるコミュニティが形成され、プログラム期間中はもちろん、その後も情報交換や相談が可能です。

具体的な成果と影響

 このプログラムは既に大きな成果を上げています。最初の2セッションに参加した71のプロジェクト(メンテナ125名)は、以下のような改善を達成しました。

  • 脆弱性の修正: GitHub CodeQLを用いて1,100件以上の脆弱性を検出し、修正しました。
  • 情報公開の促進: 参加者は50件以上の新しいCVE(共通脆弱性識別子)を発行し、依存する下流のプロジェクトに脆弱性情報を伝え、保護しました。
  • シークレット漏洩の防止: GitHubのシークレットスキャン機能により、92件の新たな認証情報(APIキーなど)の漏洩を未然に防ぎ、176件の既に漏洩していた情報を検知・解決しました。
  • AIの活用: 多くのメンテナが、GitHub Copilotを活用して脆弱性スキャンを行ったり、ファジング(未知の脆弱性を見つけるためのテスト手法)戦略を定義・実装したりと、AIをセキュリティ対策に役立てました。

主要プロジェクトにおける改善事例

 本プログラムには、日本の開発者にも馴染み深い多くのプロジェクトが参加しています。

  • Log4j: Log4jチームも参加し、脅威モデルを全面的に見直しました。メンテナは「無知こそが最大のセキュリティホールだ。もしこのトレーニングが5年前にあれば、Log4Shellは起こらなかったかもしれない」と語っており、このプログラムの重要性を示しています。
  • Node.js: サーバーサイドJavaScriptの実行環境として広く使われているNode.jsは、プログラムを通じて脅威モデルを刷新し、CodeQLをコア機能に統合する取り組みを開始しました。
  • shadcn/ui: 人気のReactコンポーネントライブラリであるこのプロジェクトは、CodeQLを導入した最初のスキャンで危険なコードパスを発見・修正しました。さらに、GitHub Copilotを活用してファジングテストをセットアップ・実装するなど、最新の技術を積極的に取り入れています。
  • Turborepo: 高速なビルドシステムであるTurborepoは、プログラムを通じてインシデント対応計画(IRP)を策定・公開し、全てのプルリクエストをCodeQLでスキャンするようにしました。

プログラム成功の要因

 このプログラムが成功した要因として以下の3点を挙げています。

  1. 資金と期間のバランス: 3週間という期間設定が、高い集中力と勢いを維持するのに効果的でした。
  2. 実践的なテーマ設定: 週ごとにテーマを絞り、理論から実践へと素早く移行できる構成が、メンテナの理解と実装を促進しました。
  3. コミュニティの力: Slackなどを通じてメンテナ同士が活発に質問や議論を行える環境が、特に開示のタイミングなど難しい問題に取り組む上で不可欠でした。

まとめ

 本稿では、GitHubが主導する「Secure Open Source Fund」の取り組みを紹介しました。このプログラムは、単に脆弱性を修正するだけでなく、資金、教育、ツール、そしてコミュニティを提供することで、OSSメンテナが持続的にセキュリティと向き合う文化を醸成することを目指しています。

 Log4jの事例が示したように、OSSのセキュリティは、もはや他人事ではありません。ソフトウェアを開発する企業、そして個々の開発者一人ひとりが、自らが利用するOSSに関心を持ち、サプライチェーン全体の安全性を高める活動に貢献していくことが、これまで以上に求められています。このGitHubの取り組みは、そのための大きな一歩と言えるでしょう。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次