ソフトウェアサプライチェーンセキュリティとは?概要と対策

  • 公開日:
  • 最終更新日:

ソフトウェアサプライチェーンセキュリティに関する取り組みは年々増えています。

ただ、個別の施策だけを見ていると、自社がどこまで対策できていて、どこが手薄なのかは意外と分かりません。

本記事では、ソフトウェアサプライチェーンの主な管理領域とリスクを整理するとともに、代表的な施策がどのような役割を担っているのかを考えていきます。

ソフトウェアサプライチェーンとは?

ソフトウェアサプライチェーンの定義

ソフトウェアサプライチェーンとは、ソフトウェアを構成する部品の選定・調達から、設計・開発、ビルド、配布、運用・保守に至るまでの一連の流れと、それらに関わる開発者、ソフトウェア資産、開発・配布・運用基盤のつながりを指します。

近年のソフトウェア開発では、自社で作成したコードだけでシステムが構成されるケースは少なくなりました。OSS(オープンソースソフトウェア)やサードパーティ製ライブラリ、クラウドサービスなどを組み合わせながら開発を進めることが一般的になっています。そのため、ソフトウェアは単体で存在するものではなく、多くの要素に依存しながら提供されています。

ソフトウェアサプライチェーンの主な管理領域とリスク

ソフトウェアサプライチェーンには、複数の管理領域があります。ここでは、全体像を捉えるため、4つの領域に分けて、それぞれに存在する主なリスクを整理します。

1開発者・開発組織

開発者・開発組織は、ソースコードの作成や変更、利用するコンポーネントの選定などを行います。この領域では、開発者アカウントの侵害や権限管理の不備などがリスクとなります。

2ソフトウェア資産

ソフトウェア資産には、ソースコード、OSS、サードパーティライブラリ、SDK(Software Development Kit:ソフトウェア開発キット)、コンテナイメージ、ビルド成果物(ソースコードから生成された実行ファイルや配布用パッケージ)などが含まれます。

この領域では、OSSの脆弱性や悪意のあるパッケージの混入、依存関係の管理不足などが課題となります。

3開発・ビルド環境

開発・ビルド環境は、ソフトウェアの開発、テスト、ビルドを行うための基盤です。開発端末、ソースコード管理システム、CI/CD(継続的インテグレーション/継続的デリバリー)環境などが含まれます。

この領域では、開発端末のマルウェア感染、認証情報の漏えい、ソースコード管理システムやCI/CD環境への不正アクセスなどがリスクとして挙げられます。

4配布・運用環境

配布・運用環境は、完成したソフトウェアを利用者へ提供し、継続的に運用・更新するための基盤です。パッケージリポジトリ、成果物を保管するレジストリ、電子署名の仕組み、アップデート配信基盤などが含まれます。この領域では、配布物の改ざん、署名鍵や認証情報の漏えい、不正なアップデートの配信、リリース後に発見された脆弱性への対応遅れなどがリスクとなります。

リスクはサプライチェーン全体に連鎖する

ソフトウェアサプライチェーンへの攻撃では、ひとつの侵害を起点に、脅威が複数の領域へ広がる点に注意が必要です。ここまで紹介したリスクは、それぞれの領域で独立して発生するとは限りません。サプライチェーンという言葉のとおり、各領域は相互に関連しており、ひとつの影響が別の領域へ連鎖しながら広がる場合もあります。

たとえば、認証情報を窃取する機能を持つ悪意のあるパッケージが開発環境で実行されると、その影響はソフトウェア資産だけにとどまりません。開発端末の認証情報が窃取され、ソースコード管理システムやクラウド環境への不正アクセスに発展する可能性があります。

また、開発者・開発組織や開発・ビルド環境が侵害された場合には、開発者アカウントの不正利用によるソースコード改ざんや、CI/CD環境への不正アクセスによる成果物の改ざんにつながる可能性があります。

さらに、改ざんされた成果物が正規の配布プロセスを通じて利用者へ提供された場合、問題は配布・運用環境の領域にまで波及します。この段階では、もともとの侵害箇所から離れた利用者側が影響を受けることになります。

このように、ソフトウェアサプライチェーンへの攻撃では、領域同士のつながりを通じて影響が広がる可能性があります。そのため、防御側も個々の対策だけを考えるのではなく、サプライチェーン全体を見渡しながら管理対象を捉えることが重要です。

ソフトウェアサプライチェーンセキュリティを支える代表的なアプローチ

ここまで、ソフトウェアサプライチェーンの主な管理領域と、それぞれに存在するリスクについて整理してきました。

一方で、実際の対策や取り組みは「ソフトウェアサプライチェーン対策」として一括りに語られることも多く、どの領域を対象とした施策なのかが分かりにくい場合があります。

そこで、代表的な取り組みをサプライチェーンの各領域に当てはめながら整理していきます。自社で実施している施策がどこをカバーしており、どこが手薄になっているのかを考える際の参考としてご覧ください。

ソフトウェア資産を把握するための取り組み

ソフトウェア資産の領域では、利用しているコンポーネントを継続的に把握・管理することが重要です。OSS管理は、組織が利用するOSSについて、利用コンポーネントやライセンス、バージョン、依存関係、脆弱性、保守状況などを把握し、継続的に管理する取り組みです。

また、SBOM(Software Bill of Materials)は、ソフトウェアを構成するコンポーネントを一覧化したソフトウェア部品表です。OSSを含むソフトウェアコンポーネントや、その依存関係を可視化できるため、OSS管理や脆弱性管理を支える情報基盤として活用されています。

開発・ビルド環境を保護するための取り組み

開発・ビルド環境の領域では、開発者アカウント、認証情報、開発端末、ソースコード管理システム、CI/CD環境などを保護するための対策が重要になります。具体的には、アクセス権限の管理、認証情報の保護、開発端末のマルウェア対策や脆弱性管理、CI/CD環境の保護などが挙げられます。

開発から運用までの脆弱性に対応する取り組み

ソフトウェアの脆弱性には、開発中からリリース後まで継続して対応することが求められます。脆弱性管理は、開発中からリリース後まで継続して、脆弱性情報の収集、影響評価、優先順位付け、修正対応を行う活動です。

また、PSIRT(Product Security Incident Response Team)は、製品やサービスに関する脆弱性情報を受け付け、影響調査、対応方針の検討、修正対応の調整、利用者への情報提供などを部門横断で調整する体制です。

サプライチェーン全体を横断する考え方

ここまで紹介した取り組みは、それぞれ主な役割や対象領域が異なり、一部は複数の領域にまたがります。

DevSecOpsは、開発から運用までのライフサイクル全体へセキュリティを組み込む考え方です。個別の施策ではなく、各領域の取り組みを継続的に改善していくためのアプローチとして位置付けられます。

個々の施策を全体像の中で捉える

OSS管理、SBOM、脆弱性管理、PSIRT、DevSecOpsは、それぞれ対象とする領域や役割が異なります。

そのため、どれかひとつの施策だけでソフトウェアサプライチェーン全体をカバーできるわけではありません。重要なのは、個々の施策を独立して捉えるのではなく、サプライチェーン全体の中で位置付けることです。

まとめ ソフトウェアサプライチェーンを俯瞰することが第一歩

ソフトウェアサプライチェーンには、開発者・開発組織、ソフトウェア資産、開発・ビルド環境、配布・運用環境など、複数の管理領域があります。

また、リスクは個々の領域に存在するだけでなく、領域をまたいで連鎖しながら広がる場合もあります。そのため、各施策やアプローチも、それぞれがサプライチェーンの異なる側面を支えています。

自社で実施している取り組みは、ソフトウェアサプライチェーンのどこを対象としているでしょうか。まずは現在の取り組みを全体像の中に当てはめてみてください。管理できている領域だけでなく、見落としている領域も見えてくるかもしれません。

また、外部に開発を委託したり、他社のソフトウェアを利用したりする場合には、委託先・提供元企業のセキュリティ管理状況を確認する視点も必要です。
取引先のセキュリティリスクを評価・管理する方法については、以下の資料をご覧ください。

セキュリティ・リスク・スコアリングシステム「SecurityScorecard」

サプライチェーンセキュリティリスク管理システム「Panorays」