Aqua Securityの最近のレポートで、サプライチェーン攻撃の脅威の増加が浮き彫りとなった。レポートによると、サプライチェーン攻撃は2020年から2021年にかけて300%増加した。また、ソフトウェア開発環境全体のセキュリティレベルは低いままであった。GoogleとCloud Native Computing Foundation (CNCF)は最近、サプライチェーンのセキュリティを向上させるためのアプローチを詳述した論文を発表した。
このレポートは、最近Aqua Securityを買収したArgon Securityによって実施された。6か月にわたって、多くの顧客の慣行とサプライチェーンを調査した。この調査により、サプライチェーンのセキュリティを向上させるために企業がフォーカスすべきリスクの3つの主要な領域を特定された。
最初の領域は、脆弱なパッケージの使用である。レポートでは、ほとんどすべての商用ソフトウェアにおけるオープンソースコードの一般的な使用法について述べている。このコードには独自の脆弱性があり、最新の状態に保つには時間と労力が必要である。脆弱なパッケージを利用する2つの共通的な攻撃について述べている。それは、既存の脆弱性の悪用とパッケージポイズニングである。最近のLog4jの脆弱性は前者の例であり、ua-parser.jsパッケージの侵害はポイズニングの例である。
攻撃者がフォーカスする2番目の領域は、侵害されたパイプラインツールである。Codecovのサプライチェーン侵害はその一例である。その攻撃では、Codecov bashアップローダーがDockerイメージを介して侵害された。攻撃者は、2、3か月の間に、CIプロセスから環境変数を抽出して、Codecovの顧客の機密データを露出させることができた。
彼らが指摘する最後の領域は、コードとアーティファクトの整合性に関連している。これには、悪意のあるかどうかに関係なく、悪いコードや機密性の高いコードをソースコードリポジトリにアップロードすることが含まれる。チームは、調査対象の顧客環境内で、コンテナイメージの脆弱性、コードリポジトリに公開された機密データ、コードの品質とセキュリティの問題など、多くの問題を発見した。
この調査では、これらの課題への対処は、ほとんどのセキュリティチームとソフトウェアチームのリソース不足によって妨げられていると指摘している。Argon Securityの最高収益責任者であるEran Orzel氏は、次のように述べている。
ほとんどのAppSecチームは、サプライチェーン攻撃のリスクに十分に対処するためのリソース、予算、知識が欠けています。これは、開発チームとDevOpsチームからの協力の必要性によってさらに複雑になります。
GoogleとCloud Native Computing Foundation(CNCF)の両方が、ソフトウェアパッケージの整合性を向上させるためのガイドラインをリリースした。Googleのソフトウェアアーティファクトのサプライチェーンレベル(SLSA)フレームワークは、Borgフレームワークの内部バイナリ認証に基づく。それは、すべてのソフトウェアアーティファクトが一方的でなく、監査可能であるべきだと宣言している。一方的でないとは、少なくとも1人の他の個人からのレビューと承認なしに、チェーン内のアーティファクトを1人の個人が変更できないことを意味する。アーティファクトを監査可能にすることで、理想的には自動化された方法で、攻撃が疑われる場合の調査の助けとなる。
フレームワークはさらに4つのセキュリティレベルを定義する。SLSA 4は理想的な最終状態を表す。SLSA 1では、ビルドプロセスを完全にスクリプト化し、プロビナンスを生成する必要がある。プロビナンスは、所有権、ソース、依存関係、使用されたビルドプロセスに関する情報を含む、アーティファクトがどのようにビルドされたかに関するメタデータである。Googleは、概念実証としてGitHub Actionをリリースした。そこでSLSA1に準拠したプロビナンスの作成を実証する。
SLSA 2ではレベルが上がる。バージョン管理と、認証されたプロビナンスを生成するホスティングされたビルドサービスの使用が要求される。SLSA 3では、コードのソースとプロビナンスの整合性の両方について、ソースプラットフォームとビルドプラットフォームが十分に監査可能であるという要件が追加される。
最終的な状態であるSLSA 4では、すべての変更を2人で確認し、外部の影響を受けない再現性のあるビルドプロセスが要求される。Kim Lewandowski氏は「2人によるレビューは、間違いを見つけて悪い行動を阻止するための業界のベストプラクティスである」と述べている。外部の影響を受けないビルドは自己完結型であり、ビルド環境の内部のサービスのみに依存する。これには、ビルドツールの既知のバージョンと、コードライブラリなどの他の依存関係が含まれる。ビルドを再現可能にすることで、サプライチェーンの監査の助けとなる。
CNCFの論文「ソフトウェアサプライチェーンセキュリティのベストプラクティス」では、サプライチェーンセキュリティの4つの主要な原則、つまり信頼、自動化、透明さ、相互認証を定義している。プロセスの各ステップは、暗号化の証明と検証を使った信頼できるものでなければならない。自動化を使用すると、人的エラーと構成のずれの両方を低減できる。ビルドプロセスと環境は、それに応じて明確に定義し、スコープを定める必要がある。相互認証では、サプライチェーン内のすべてのエンティティが定期的なキーローテーションを備えた強固な認証メカニズムを使用する必要がある。
レポートの調査結果の詳細については、読者はAqua Security Supply Chain Attacksの調査を確認できる。