2026年に報告されたCVEは、1日あたり前年比131%増加しています。

サプライチェーン

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

ソフトウェアサプライチェーンセキュリティとは、ソフトウェアがユーザーに届くまでに入り込むすべてのもの、つまりオープンソースパッケージ、ビルドシステム、パイプラインのツール、そしてリリースそのものを守る取り組みです。攻撃者はアプリケーションではなく、これらを狙うことが増えています。侵害されたパッケージやビルドステップが1つあれば、それを使うすべての製品に到達できるからです。

更新日

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

ソフトウェアサプライチェーンとは、ソフトウェアが開発者のエディターから本番環境に届くまでに関わるすべての人とものです。それぞれに固有のリスクがある4つの段階で考えてみましょう。

段階 含まれるもの 起こりうる問題
ソース 自社のコード、リポジトリ、開発者アカウント 認証情報の窃取、悪意のあるコミット、シークレットの漏えい
依存関係 オープンソースパッケージ、ベースイメージ、サードパーティのコード 脆弱なバージョン、悪意のあるリリース、タイポスクワッティング
ビルド CIランナー、GitHub Actions、ビルドツール、キャッシュ 侵害されたアクション、汚染されたキャッシュ、パイプラインのシークレットの窃取
リリース 成果物、レジストリ、デプロイ、アップデート すり替えられた成果物、改ざんされたアップデート、出荷したものの記録の欠如

今、重要である理由

出荷するものの大半は、自分たちで書いたものではありません。現代のアプリケーションの大部分はオープンソースであり、直接の依存関係はそれぞれ、チームの誰も選んでいない別の依存関係を連れてきます。それらのパッケージは自社のコードと同じ権限で実行され、そのインストールスクリプトはCIパイプライン内で、シークレットのすぐそばで実行されることがあります。

ここ数年の事例は、それがどのように悪用されるかを示しています。

  • SolarWinds:ビルドが侵害されたため、クリーンなソースツリーから汚染されたリリースが生成されました。
  • Log4Shell:1つのロギングライブラリの欠陥が、それを使っていることすら知らなかった製品にまで及びました。
  • xz utils:信頼されたコントリビューターが、Linuxディストリビューションに含まれるプロジェクトにバックドアを仕込みました。
  • tj-actions:乗っ取られたGitHub Actionが、それを使うパイプラインで攻撃者のコードを実行し、シークレットに手が届く状態になりました。
  • Shai-Hulud:ワームがnpmパッケージを通じて拡散し、それをインストールしたマシンやCIジョブからトークンを盗みました。

これらの攻撃の仕組みを段階ごとに知るには、サプライチェーン攻撃とはをご覧ください。

ソフトウェアサプライチェーンセキュリティの仕組み

取り組みに必要なのは4つのことです。それ以外は細部にすぎません。

  1. 出荷するものを把握する。すべてのリリースについて、正確なSBOMを、それを生成したビルドから、推移的依存関係も含めて保持します。
  2. 入り込むものを制御する。バージョンを固定し、ロックファイルを使い、ビルドの取得元を制限し、新しいパッケージを精査します。
  3. ビルドを守る。ジョブを分離し、シークレットを制限し、アクションをコミットで固定し、外向きの通信を制限して、侵害されたパッケージがトークンをどこにも送れないようにします。ランナーのセキュリティとサプライチェーンセキュリティをCIで行うべき理由をご覧ください。
  4. 出荷したものを監視し続ける。新しい脆弱性は、すでに本番環境にあるソフトウェアにも影響します。それを監視し、どのリリースが影響を受けるかを追跡し、各修正を新しいリリースまで見届けます。

詳しいチェックリストはソフトウェアサプライチェーンセキュリティのベストプラクティスをご覧ください。

フレームワークと規制

名称 概要 適した用途
SLSA ビルドの完全性と来歴に関するレベル ソフトウェアのビルド方法の強化
NIST SSDF セキュアな開発プラクティス、SP 800-218 包括的なセキュア開発プログラム
NIST SP 800-161 サイバーセキュリティのサプライチェーンリスク管理 組織全体のリスク管理
OpenSSF Scorecard オープンソースプロジェクトの健全性の自動チェック 依存関係の精査
Cyber Resilience Act デジタル要素を含む製品に関するEUの法律 EUでの販売。CRAとはをご覧ください

どのようなツールが関わるか

これらすべてをカバーする単一の製品はありません。このカテゴリは、SCAツール、SBOMツール、CI/CDとランナーのセキュリティ、パッケージファイアウォール、アプリケーションセキュリティポスチャ管理、バイナリ解析に分かれます。それぞれの役割と提供ベンダーについては、ソフトウェアサプライチェーンセキュリティツールの比較とその費用をご覧ください。

どこから始めるか

  1. 最も重要な製品について、CIビルドからSBOMを生成し、読んでみる。
  2. 依存関係の脆弱性アラートを有効にし、誰が担当するかを決める。
  3. GitHub Actionsをコミットで固定し、ワークフローがアクセスできるシークレットを見直す。
  4. ビルドからの外向きの通信を、実際に必要なホストに制限する。
  5. ビルド中のものだけでなく、出荷したものの監視を設定する。

CRACIのアプローチ

CRACIはビルドから始めます。ビルドこそが、すべてを見渡せる唯一の場所だからです。CRACIはGitHubホステッドランナーを、より高速で低コストなランナーに置き換え、各ジョブが取得したすべてのパッケージを、ツリーのあらゆる階層で、CIキャッシュから復元されたパッケージも含めて記録します。エグレスポリシーはビルドに不要な接続をブロックするため、誰も見たことのない攻撃からも守ります。さらにCRACIは、出荷したものを新しい脆弱性と照合し続け、それぞれをトリアージから修正済みリリースまで追跡します。CRACIによるソフトウェアサプライチェーンセキュリティをご覧ください。

ソフトウェアサプライチェーンセキュリティに関するよくあるご質問

ソフトウェアサプライチェーンセキュリティとは何ですか?

ソフトウェアがユーザーに届くまでに入り込むすべてのもの、つまりオープンソースの依存関係、ビルドシステム、パイプラインのツール、リリースを守る取り組みです。

ソフトウェアサプライチェーン攻撃の例を教えてください。

SolarWindsの攻撃ではビルドが侵害されたため、顧客は信頼されたベンダーから汚染されたアップデートを受け取りました。Shai-Huludの攻撃では、ワームがnpmパッケージを通じて拡散し、それをインストールしたマシンからトークンを盗みました。

サプライチェーンセキュリティとアプリケーションセキュリティの違いは何ですか?

アプリケーションセキュリティは、自分たちが書いたコードの欠陥を対象とします。サプライチェーンセキュリティは、自分たちが書いていないもの、そしてソフトウェアがどのようにビルド・リリースされるかを対象とします。取り組みには両方が必要です。

サプライチェーンセキュリティはSBOMだけで十分ですか?

いいえ。SBOMは出荷するものを示すもので、それが基盤になります。そのうえで、入り込むものを制御し、ビルドを守り、リリースしたものを監視し続ける必要があります。

主なフレームワークは何ですか?

ビルドの完全性に関するSLSA、セキュアな開発プラクティスに関するNIST SSDF、サプライチェーンのリスク管理に関するNIST SP 800-161です。EUでは、Cyber Resilience Actがデジタル要素を含む製品に法的要件を定めています。

ソフトウェアサプライチェーンセキュリティは誰が担当しますか?

通常はアプリケーションセキュリティまたはプロダクトセキュリティのチームが担い、パイプラインを運用するプラットフォームチームやDevOpsチームと連携します。修正は各サービスを担当するエンジニアリングチームに引き渡されます。

ビルドが実際に取り込むものを確認する

CRACIで1つのGitHub Actionsワークフローを実行し、ビルドを記録したSBOMとネットワークトレースを入手してください。

デモを予約