第 5 章: オープンソースのセキュリティ管理
序文
注: 本章は、Open Source Security Foundation(OpenSSF)の代表者たちの専門知識に基づき、TODO Group の支援を受けて作成されました。
オープンソースソフトウェアは、ソフトウェアサプライチェーンの重要な要素です。このため、OSPO の責任の一環として、オープンソースサプライチェーンのセキュリティを確保するための支援が求められます。これには次のタスクが含まれます。
- 製品で利用するオープンソースのセキュリティを評価する開発チームを支援する。
- 開発チームのアップストリームのオープンソースプロジェクトへの貢献を促進し、そのセキュリティを向上させる。
- 企業が維持、貢献、リードするオープンソースプロジェクトにおいて、セキュアなソフトウェア開発のベストプラクティスを遵守する。
本章には、OSPO とオープンソース開発者が利用するソフトウェアと開発するソフトウェアの両方で、セキュアなソフトウェア開発とサプライチェーンのベストプラクティスを適用するための有用なリソースが含まれています。
ある意味セキュリティは他の要件と変わりません。しかし、多くのソフトウェア開発者とそのマネージャーは、セキュリティに関する十分なトレーニングを受けていません。また、セキュリティとは、知能的な攻撃者から守ることであり、システムの一部ではなくシステム全体が連携することで達成されることが多々あります。
セキュリティ問題を後から修正するのは往々にして高コストです。予防し、発生する機会や影響を軽減し、万一発生した場合に備えることが重要です。また、最初から計画を立て、セキュリティを適切に扱うためのリソース(時間や資金など)を割り当てることも重要です。オープンソースソフトウェアは、大規模なピアレビューが可能で「オープンデザイン」の原則に従うため、セキュリティ上の優位性が得られます。しかし、こうしたメリットは自動で得られるものではありません。
トレーニングと教育
多くのソフトウェア開発者やマネージャーは、セキュリティに関する必要な知識を把握していません。こうした知識不足は、しばしば問題を引き起こします。次に、理解すべき重要な領域と、役立つ無料の OpenSSF コースへのリンクをまとめました。これらの特定のコースは必須というわけではありませんが、ソフトウェア開発に関わる全員が適切なトレーニングを受けることが重要です。
(オープンソースとクローズドソースの両方のプロジェクト)のマネージャーは、セキュアなソフトウェア開発を管理する方法を理解する必要があります。これには、基本的なセキュリティ用語の理解、リスク管理の方法、設計段階からのセキュリティの組み込み、すべての環境の保護、リスクの早期発見、ステークホルダーとの明確な期待値の設定が含まれます。また、開発者が学ぶべき内容も理解する必要があります。まだトレーニングを受けていない場合は、OpenSSF の無料コース Security for Software Development Managers (LFD125) 1 を受講できます。
開発者は、セキュアなソフトウェア開発に関するコースを受講する必要があります。これには、計画、設計、コーディング、テスト、リリースの各段階でセキュアなソフトウェアを構築する方法が含まれます。開発者は、サードパーティ製ソフトウェアの評価方法も理解する必要があります。ウェブアプリ向けの OWASP Top 10 2 や一般的なソフトウェア向けの CWE Top 25 3 などに含まれる一般的な脆弱性とその回避方法も理解する必要があります。また、開発環境のセキュリティを確保し、脆弱性レポートに対応する方法も把握する必要があります。このトレーニングを受けていない場合は、OpenSSF の無料コースセキュアソフトウェア開発 (LFD121-JP) 4 を受講できます。
開発者とマネージャーは、遵守が必要な法律や規制を理解しなければなりません。たとえば、欧州連合(EU)で使用される可能性があるソフトウェアに関与する人は誰でも、EU サイバーレジリエンス法(CRA)を理解する必要があります。これには、CRA の適用範囲、定義される役割(製造者やオープンソーススチュワードなど)、CRA が定める法的責任が含まれます。CRA は広範な範囲をカバーし、厳しい罰則を定めているため、理解が必要な人は、OpenSSF の無料コース Understanding the European Union (EU) Cyber Resilience Act (CRA) (LFEL1001) 5 を受講できます。
主要なステップ
自社ソフトウェア開発の場合:
- 実践的なリソースにつながる OpenSSF のより安全なソフトウェア開発のための簡潔なガイド 6 を確認する。
- セキュリティチェックの簡潔なリストである Open Source Project Security(OSPS)Baseline 7 を満たすように努める。
- プロジェクトで OpenSSF ベストプラクティスバッジ 8 を取得する。最初は「passing」を取得することから始め、時間をかけて「silver」または「gold」を目指す計画を立てる。
- OpenSSF スコアカード 9 のスコアを向上させる。これは他のプロジェクトの評価によく使用されるが、自身のプロジェクトの進捗を測定するのにも役立つ。
現代のほとんどのソフトウェアは他のソフトウェアを再利用しています。慎重にオープンソースコンポーネントを選択して利用してください:
- オープンソースソフトウェアの評価のための簡潔なガイド 10 を使用する。
- 「タイポスクワッティング」攻撃(悪意のあるパッケージが信頼できるパッケージと似た名前を使用する攻撃)を回避するために、ソフトウェア名を再確認する。
- ソフトウェアを利用する前にソフトウェアを評価するために、OpenSSF スコアカード 9 を使用する。
開発、ビルド、テスト、配布を含む環境を保護してください:
- 多要素認証(MFA)を使用して、攻撃者からアクセスしにくくする。
- ビルド環境を保護する。詳細なガイドラインは OpenSSF SLSA 11 を参照する。
セキュリティ問題を早期検出するために、継続的インテグレーション(CI)パイプラインで自動化されたツールを使用してください:
- ツールによって異なる問題を検出する可能性があるため、複数の種類のツールを使用する。Guide to Security Tools 12 を参照する。
- 新規プロジェクト(「グリーンフィールド」)では、すべてのセキュリティチェックを有効化する。既存プロジェクト(「ブラウンフィールド」)では、レポートを管理しやすいように最も重要なチェックから開始する。
- 再利用コンポーネントの既知の脆弱性を検出するツールを有効化する。
脆弱性レポートに備えてください。脆弱性レポートは、どのプロジェクトでも発生する可能性があります。脆弱性を報告する方法について明確に説明してください。オープンソースプロジェクトは、OpenSSF のオープンソースプロジェクト向けに協調的脆弱性開示プロセスを実装するためのガイド 13 を確認する必要があります。
組織への適用
組織内のオープンソースのセキュリティを向上させることは、単にツールを使用するだけではありません。文化や日々の業務プロセスも変える必要があります。最初のステップの 1 つは、セキュリティは小さなチームだけではなく全員の責任であるという意識を築くことです。リーダーは、セキュアなソフトウェア開発が重要であることを明確に伝え、時間、リソース、そしてセキュリティに取り組む人を評価することによって支援する必要があります。
セキュリティ対策は、日々の開発業務の一部であり、切り離されたものではありません。たとえば、セキュリティチェックをたまに実行するのではなく、スコアカードや脆弱性スキャンなどのツールを CI/CD パイプラインの一部に組み込んでください。こうすることで、セキュリティは、チームがソフトウェアを構築する際の当たり前に期待される要素となります。
トレーニングと教育は、一度きりではなく、定期的に実施すべきです。開発者やマネージャーには、セキュアなソフトウェア開発の基礎を学ぶよう奨励すべきです。これには OpenSSF の無料コースや他のプログラムが含まれます。セキュリティの学習は重要であり、それは評価されることをチームに理解してもらいしましょう。これにより、長期的な関心と責任感が育まれます。
セキュリティの進捗状況をオープンにすることも役立ちます。チーム間で目標(例: ベストプラクティスバッジの獲得やスコアカードの結果の改善)の進捗を追跡し、共有するよう促しましょう。こうすることで、問題が発生したら責められると感じるのではなく、互いに助け合い、共に改善していくポジティブな環境が生まれます。
最後に、継続的な改善を支援しましょう。セキュリティに終わりはなく、常に変化するものです。リスクのレビュー、ツールやプラクティスの更新、チームが学んだことを共有する定期的な時間を設けましょう。開発プロセスの最終段階や問題が発生した後だけでなく、初期段階からセキュリティに関する意思決定をチームに委ねましょう。
共同責任の文化を築き、セキュリティを日々の業務に組み込み、学習に投資し、オープンさを促進し、継続的に改善することで、組織は構築・利用するオープンソースのセキュリティ確保に向けて真に進むことができます。
リソースと脚注
リソース
- OpenSSF: https://openssf.org/
- OWASP: https://owasp.org/
- CWE: https://cwe.mitre.org/index.html
脚注
Open Source Security Foundation OpenSSF course Security for Software Development Managers (LFD125): https://training.linuxfoundation.org/training/security-for-software-development-managers-lfd125/ ↩︎
OWASP Top 10: https://owasp.org/www-project-top-ten/ ↩︎
CWE Top 25: https://cwe.mitre.org/top25/ ↩︎
OpenSSF 提供のコース、セキュアソフトウェア開発 (LFD121-JP): https://training.linuxfoundation.org/ja/training/developing-secure-software-lfd121-jp/ ↩︎
Understanding the EU Cyber Resilience Act (CRA) (LFEL1001): https://training.linuxfoundation.org/express-learning/understanding-the-eu-cyber-resilience-act-cra-lfel1001/ ↩︎
より安全なソフトウェア開発のための簡潔なガイド: https://www.linuxfoundation.jp/concise-guide-for-developing-more-secure-software-jp/ ↩︎
Open Source Project Security(OSPS)Baseline: https://baseline.openssf.org/ ↩︎
OpenSSF ベストプラクティスバッジ: https://www.bestpractices.dev/ja ↩︎
OpenSSF スコアカード: https://github.com/ossf/scorecard ↩︎ ↩︎
オープンソースソフトウェアを評価するための簡潔なガイド: https://www.linuxfoundation.jp/concise-guide-for-evaluating-open-source-software-jp/ ↩︎
OpenSSF SLSA: https://slsa.dev/ ↩︎
Guide to Security Tools: https://github.com/ossf/wg-security-tooling/blob/main/guide.md#readme ↩︎
オープンソースプロジェクト向けに協調的脆弱性開示プロセスを実装するためのガイド: https://www.linuxfoundation.jp/maintainer-guide-jp/ ↩︎