ソフトウェア サプライ チェーンに対する攻撃ベクトルは、誰かが意図的に、または誤ってソフトウェアを侵害できる可能性のあるさまざまな方法です。
脆弱性のあるソフトウェアのリスクには、認証情報や機密データの漏洩、データの破損、マルウェアのインストール、アプリケーションの停止などがあります。こうした問題は、時間、費用、お客様の信頼を失う結果になります。
脅威のエントリ ポイントはソフトウェア ライフサイクル全体にわたり、組織の内外から発生します。
この図の凡例には、次の 2 種類の脅威が含まれています。
- 文字 A から H は、ソフトウェア アーティファクトのサプライ チェーン レベル(SLSA)フレームワーク内で脅威脅威として記述される、サプライチェーン内の攻撃ベクトルを示します。
- 番号 1 から 4 は、SLSA フレームワークが直接記述していない追加の攻撃ベクトルを示します。
Google Cloud のフルマネージド ソフトウェア サプライ チェーン セキュリティ ソリューションである Software Delivery Shield には、両方の脅威を緩和するためのベスト プラクティスが組み込まれています。
このドキュメントのサブセクションでは、ソース、ビルド、デプロイ、依存関係のコンテキストでの脅威について説明します。
ソースの脅威
これらの脅威はソースコードの整合性に影響します。
1: 安全でないコードを作成する。安全なコーディング方法がないために、意図せずに脆弱性が記述される可能性があります。安全でないデベロッパー ワークステーションにより、悪意のあるコードや安全でないコードが導入される可能性があります。緩和策:
- デベロッパー ワークステーション用のポリシー設定 Cloud Workstations は、要件に合わせて調整できるフルマネージドの事前構成済みワークステーションです。
- コードのローカル スキャン。Cloud Code のソース保護(非公開プレビュー)は、依存関係の脆弱性やライセンス情報など、リアルタイムのセキュリティ フィードバックを提供します。オンデマンド スキャン API を使用して、デベロッパーはコンテナ イメージの OS と言語パッケージの脆弱性をスキャンすることもできます。
- コードのセキュリティを高める方法に関する教育。
A: ソース リポジトリに不正なコードを提出する。これには、悪意のあるコードだけでなく、クロスサイト スクリプティングなどの攻撃に意図せず脆弱性を引き起こすコードも含まれます。 緩和策:
- ソースコードの変更に対して人間による審査を要求する。
- IDE およびソース管理システムと統合するコード スキャンおよび lint チェックツールを使用する。
B: ソース管理システムを不正使用する。ソース管理システムやビルド パイプライン内のその他のシステムへのアクセスを制限し、多要素認証を使用することで、このリスクを軽減できます。
ソースの整合性を評価する場合は、ソフトウェアのビルド、デプロイに使用するサポート スクリプトと構成も確認してください。これらのファイルをソース管理システムとコードレビュー プロセスに含めると、これらのファイルの脆弱性のリスクを回避できます。
ソースの保護について詳しくは、ソースの保護をご覧ください。
ビルドの脅威
こうした脅威は、ソフトウェアの構築時やパッケージ化時にソフトウェアを危険にさらすか、ソフトウェアのコンシューマを騙して不正なバージョンを使用させます。
- C: 信頼できるソース管理システム以外のソースを使用したビルド。このリスクを軽減する緩和策には、次のようなものがあります。
- Cloud Build などのビルドサービスを使用して来歴情報を生成し、ビルドが信頼できるソースを使用していることを検証できます。
- CI/CD インフラストラクチャをネットワーク境界に配置して、ビルドからのデータの引き出しを防ぎます。Google Cloud サービスには、VPC Service Controls を使用します。
- 必要なオープンソース依存関係の信頼できるコピーを Artifact Registry などのプライベート アーティファクト ストアに格納して使用します。
- D: ビルドシステムを不正使用する。このリスクを軽減する緩和策には、次のようなものがあります。
- ビルドシステムへの直接アクセスを、必要なユーザーだけに制限することで、最小権限の原則に従います。Google Cloud では、適切な事前定義ロールを付与することも、カスタムロールを作成することもできます。
- Cloud Build などのマネージド ビルドサービスを使用します。 Cloud Build は、ビルドごとに VM 環境を設定し、ビルド後に破棄することで、エフェメラル ビルドのビルドを実行します。
- CI/CD インフラストラクチャをネットワーク境界に配置して、ビルドからのデータの引き出しを防ぎます。Google Cloud サービスには、VPC Service Controls を使用します。
- F: 正式なプロセス以外でビルドされたソフトウェアをパッケージ化して公開する。ビルドの来歴を生成して署名するビルドシステムを使用すると、信頼できるビルドシステムによってソフトウェアがビルドされたことを検証できます。
- G: 内部または外部ユーザーのためにソフトウェアを保存するリポジトリを不正使用する。このリスクを軽減する緩和策には、次のようなものがあります。
- 必要なオープンソース依存関係の信頼できるコピーを Artifact Registry などのプライベート アーティファクト ストアに格納して使用します。
- ビルドとソースの場所を検証します。
- 人間以外の専用のアカウントとリポジトリ管理者に、アップロード権限を制限します。Google Cloud では、サービス アカウントはサービスとアプリケーションの代理として機能します。
デプロイとランタイムの脅威
H: バージョン範囲、または特定のビルド バージョンに永続的にアタッチされていないタグを指定して依存関係を解決すると、いくつかの問題が発生する可能性があります。
- ビルドが最初に使用する依存関係は、同じビルドの今後の実行に使用される依存関係とは異なる場合があるため、ビルドは再現されません。
- 依存関係は、侵害されたバージョン、またはソフトウェアを壊す変更を含むバージョンに解決される可能性があります。不正な行為者は、この不確実性を利用して、使用するバージョンではなく行為者のパッケージのバージョンをビルドに選択させることができます。さまざまな依存関係のベスト プラクティスを使用すると、依存関係の混乱のリスクを軽減できます。
2: デプロイ プロセスを不正使用する。継続的デプロイ プロセスを使用している場合、そのプロセスが侵害されると、ユーザーに提供するソフトウェアに不要な変更が生じる可能性があります。デプロイ サービスへのアクセスを制限し、本番前環境で変更をテストして、リスクを軽減できます。Cloud Deploy は、環境間の継続的デリバリー プロセスと昇格の管理に役立ちます。
3: 侵害された、または準拠されていないソフトウェアをデプロイする。デプロイ ポリシーを適用することで、このリスクを軽減できます。Binary Authorization を使用すると、コンテナ イメージがポリシーを遵守していることを検証し、信頼できないソースからのコンテナ イメージのデプロイをブロックできます。
4: ソフトウェアの実行における脆弱性と構成ミス。
- 新たな脆弱性が定期的に発見されます。つまり、新しい脆弱性が見つかると、本番環境のアプリケーションのセキュリティ リスクレベルが変わる可能性があります。
- コンテナによっては、root ユーザーとして実行したり、コンテナの実行中に権限昇格を許可したりするなど、不正アクセスのリスクが高まります。
GKE セキュリティ体制ダッシュボードには、実行中のワークロードの OS の脆弱性と構成の問題に関する情報が表示されます。
Cloud Run では、デプロイしたリビジョンに関するセキュリティ分析情報(デプロイしたコンテナ イメージの既知の脆弱性など)を表示することもできます。
ソースの保護については、ビルドの保護をご覧ください。また、デプロイの保護については、デプロイの保護をご覧ください。
依存関係の脅威
依存関係には、ビルド内の直接依存関係と、すべての推移的依存関係(直接依存関係の下流にある依存関係の再帰ツリー)が含まれます。
この図の E は、ビルドで不適切な依存関係を使用していることを示します。不適切な依存関係には、次のようなものが含まれます。
- アプリケーションが依存するソフトウェア(内部で開発したコンポーネント、商用のサードパーティ ソフトウェア、オープンソース ソフトウェアなど)。
- その他の攻撃ベクトルからの脆弱性。次に例を示します。
- 攻撃者がソース管理システムにアクセスし、プロジェクトで使用する依存関係のバージョンを変更します。
- ビルドには、組織内の別のチームが開発したコンポーネントが含まれています。ビルドを公開し、ローカルの開発環境から直接コンポーネント公開し、テストとデバッグのためにのみローカルで使用するライブラリに誤って脆弱性が入れられます。
- パブリック リポジトリからオープンソースの依存関係を意図的に削除します。 この削除によって、パブリック リポジトリから直接依存関係を取得すると、消費するパイプラインが壊れる可能性があります。
リスクを軽減する方法については、依存関係のベスト プラクティスをご覧ください。
脅威の軽減
サプライ チェーンの全体的な整合性の強度は、最も脆弱な部分と同程度です。攻撃ベクトルを無視すると、サプライ チェーンのその部分で攻撃のリスクが高まります。
同時にすべての変更を行う必要はありません。ソフトウェア サプライ チェーンのセキュリティには、スイス チーズモデルとしてよく知られた累積アクション エフェクトが適用されます。実装した各緩和策によってリスクを軽減できます。また、サプライ チェーン全体で緩和策を組み合わせることで、さまざまな種類の攻撃に対する保護を強化できます。
- 組織が脅威を検出、対処、修正する能力を評価するのに役立つフレームワークとツールを使用して、セキュリティ体制を評価します。
- ソフトウェア サプライ チェーンを保護するベスト プラクティスについて学習し、それらのベスト プラクティスをサポートするように設計された Google Cloud プロダクトについて学習します。
- Software Delivery Shield を使用して、Google Cloud 上のソフトウェア サプライ チェーン全体でソフトウェアを保護します。優先度と既存のインフラストラクチャに基づいて、サービスを段階的に実装できます。
次のステップ
- セキュリティ体制を評価する。
- ソフトウェア サプライ チェーンを保護するベスト プラクティスについて学習する。
- Software Delivery Shield について学習する。