重要なポイント
今日のソフトウェアは、そのほとんどがゼロから構築されたものではありません。
オープンソースライブラリ、サードパーティAPI、CI/CDツール、ビルドスクリプト、デプロイパイプラインなど、数十(ときには数百)の外部コンポーネントの組み合わせによって構築されています。
このエコシステム全体が、ソフトウェアサプライチェーンと呼ばれます。物理的なサプライチェーンと同じく、1つの脆弱なリンクが破壊されると、システム全体がリスクにさらされることになります。
ソフトウェアサプライチェーンのセキュリティとは、ソフトウェアの開発から提供に至るプロセスのあらゆる段階を保護する取り組みです。最終成果物だけでなく、その過程で関わるすべてのものが対象となります。
ソフトウェアサプライチェーンを保護するための第一歩は、実際に何を保護すべきなのかを理解することです。これには、アプリケーションコードだけでなく、ソフトウェアの構築、テスト、出荷に関わるシステム全体が含まれます。主なコンポーネントは次のとおりです。
つまり、ソフトウェアの構築やリリースに関わるものは、すべてサプライチェーンの一部であり、保護する必要があります。
今日、ソフトウェアの開発は非常に速いペースで行われています。コードを迅速かつ頻繁にリリースするために、組織はオープンソースパッケージ、外部API、自動化ソフトウェアに依存しています。このような開発手法は、スピードの面では優れていますが、セキュリティの面では必ずしもそうではありません。
実は、自社のアプリが完全に自社だけのものであるということはないのです。
その大部分は、見知らぬ人が記述したライブラリで構成されています。また、サードパーティが管理しているツールやスクリプトが組み合わされています。さらに、そのアプリのデプロイに使用しているのは、自社ではコントロールできないプラットフォームです。
ハッカーは、この状況を十分に認識しています。アプリのコードを直接攻撃しなくても、サプライチェーンを構成しているコンポーネントの1つを侵害するだけで、すべてのコンポーネントにアクセスできる可能性があるのです。
ソフトウェアサプライチェーンについて真剣に取り組むことがもはや避けられない理由はここにあります。実際、次のような事態がいつ発生しても不思議ではありません。
こうした事態がどれほど深刻なものなのかを知るために、実際の事例を見てみましょう。
Splunkは、Forrester、ガートナー、IDCの3社からSIEMのリーダーに選出されました。最新のマジック・クアドラントレポートをダウンロードして、その理由をご確認ください。ダウンロードはこちら→
Splunkのセキュリティ製品とソリューションについて詳しくは、以下の各Webサイトをご覧ください。
ソフトウェアツールが攻撃ベクトルになると、その被害は1社にとどまらず、そのツールに依存しているすべての企業に波及します。そこで、業界でよく知られている主なソフトウェアサプライチェーン攻撃とその原因、そしてこれらの重大インシデントが今も取り上げられる理由について見てみましょう。
2020年にSolarWinds社のOrionソフトウェアが侵害された事件は、これまでで最も壊滅的な影響をもたらしたサプライチェーン攻撃の1つです。
ハッカーによって悪質なコード(後にSunburstと命名)が挿入されたOrionのアップデートが、米国の連邦政府機関や、Microsoft社を含む大手テクノロジー企業など、18,000ほどの組織に配信されました。このソフトウェアは管理者レベルのアクセス権を有していたため、攻撃者は発見されるまでの数カ月間、高度なセキュリティが施されたネットワーク内を気づかれることなく移動していました。
短期的な問題と長期的な影響
2021年後半、Javaのエコシステム全体で使用されているログツールのApache Log4jに、リモートコード実行(RCE)の欠陥が見つかりました。
攻撃者は、Log4Shellと名付けられたこの脆弱性を利用して、ログインや認証なしにサーバーをリモートで制御しました。
問題の広がり
2021年、Codecov社のCI/CDツールが侵害されました。その原因は、Dockerイメージの作成時に使用される資格情報へのアクセスを攻撃者に許したことでした。
これにより、攻撃者は開発者がパイプラインで使用していたBashアップローダースクリプトの改ざんに成功しました。これらのスクリプトはシークレットとトークンへのアクセス権を有していたため、攻撃者は何百もの環境から資格情報を盗み出すことができました。
さらに悪いことに、この侵害は3カ月もの間検出されませんでした。その間、攻撃者は警戒されることなく、多くの内部システムにひそかに侵入することができました。
影響と問題
ソフトウェアサプライチェーンに対する脅威は、その発生源によって大きく2つのカテゴリーに分類されます。
外部脅威は組織の外部で発生し、多くの場合、サードパーティのコンポーネント、パブリックインフラ、または保護されていない通信を標的とします。具体例としては以下のものがあります。
内部脅威は、従業員のミス、アカウントの侵害、開発パイプラインのセキュリティ対策の不備など、組織の内部で発生します。
ただし、これらの脅威により無作為に攻撃されるわけではなく、ソフトウェアライフサイクルの特定のコンポーネントが標的となる傾向があります。詳しく説明しましょう。
ソフトウェアサプライチェーンの保護は、ツールを1つインストールすれば済むというものではありません。開発ライフサイクルにおける実際のリスクを特定し、最も重要な部分に防御層を構築することが重要です。では、このアプローチについて見てみましょう。
以下の方法で、コードベースの管理を強化できます。
また、メインブランチへの直接プッシュを禁止したり、Gitアカウントで2要素認証を必須にしたりするといった基本的な対策も大いに役立ちます。慎重に行わないと、1つのブランチに設定ミスがあるだけで、そこが攻撃対象領域になる可能性があります。
深く考えずに何十ものオープンソースパッケージを使用していないでしょうか。直接的または間接的な依存関係を構築する前に、依存関係が自動でスキャンされるようにしてください。次に、ビルドプロセスの一環としてソフトウェア部品表(SBOM)を作成し、アプリに含まれるコンポーネントとその入手場所をいつでも確認できるようにしましょう。
これだけでも、Log4Shellのような脆弱性が新たに見つかって数日間混乱状態に陥るリスクを回避できます。これは「起こるかどうか」ではなく「いつ起こるか」の問題です。
Ansible、Puppet、Chefなどのツールはインフラのデプロイ方法を制御するものであるため、悪用すればマルウェアを容易に拡散させることも可能です。このリスクを軽減するには、以下のように、プレイブックを重要なコードとして扱います。
CI/CDパイプラインで、過剰な権限が付与されていたり、分離が適切に行われていなかったりすると、大きなリスクがもたらされます。
可能な対策としては、実行環境を分離する、資格情報を自動でローテーションする、署名付きビルドジョブを使用するといった方法があります。また、ビルドプロセス中にアテステーション(構成証明)のメタデータを生成し、ビルドの内容、ビルドに使われたシステム、ビルドの実行者を証明できるようにしましょう。
ビルドをリリースするたびに、署名付きのアテステーションを添付できます。SigstoreやCosignなどのツールは、この作業を自動化するのに役立ちます。アテステーションはアーティファクトが改ざんされていないことを証明するもので、使用された環境やツールに関する詳細情報も含めることができます。
NISTのセキュアソフトウェア開発フレームワーク(SSDF)のようなプラットフォームには、ロードマップが用意されています。まず、開発者のトレーニング、早期のコードスキャン、そしてインシデントが発生する前に脆弱性に対処するプロセスの設定から始めましょう。
「サルサ」と呼ばれるSLSAは、Supply-chain Levels for Software Artifactsの略で、ソフトウェアサプライチェーンの完全性を保護するために設計されたセキュリティフレームワークです。Googleによって開発されたこのフレームワークは、組織が構築、使用、配布するソフトウェアの保護に役立つベストプラクティスとコンプライアンスレベルのセットを提供します。サプライチェーンのセキュリティを段階的に強化するためのロードマップとして利用してください。
SLSAの目的は、ソースコード、ビルドスクリプト、コンテナイメージなどのソフトウェアアーティファクトが安全かつ検証可能な方法で作成され、管理されるようにすることです。特に、不正な変更の防止、トレーサビリティの確保、改ざんリスクの軽減に重点が置かれています。
SLSAは、環境の成熟度を示すモデルと考えることができ、セキュリティの成熟度がレベル1~4の4段階で定義されています。
ソフトウェアサプライチェーンのリスク管理に必要なのは、攻撃者よりも先に脆弱性を特定すること、そしてリスクの監視、評価、対応のためのシステムを導入することです。
そこで役立つのが、サプライチェーンリスク管理(SCRM)です。
SCRMの本質は、サプライチェーンに含まれるすべての要素(ベンダー、ツール、サードパーティライブラリ、クラウドプラットフォーム、さらには顧客まで)を把握し、各要素がセキュリティ態勢に与える影響を評価することにあります。
直接取引しているサプライヤーだけでなく、サプライヤーが使用しているツールやプラットフォーム、サプライヤーの環境のセキュリティ管理レベルも、全体的なリスクに影響します。SCRMを導入すれば、以下のことが可能になります。
SCRMの実践に役立つ脅威インテリジェンス、ベンダー評価、継続的監視などの機能を備えたプラットフォームが多数存在します。しかし、まずは戦略を策定することが必要です。
脆弱性の追跡、パッチの適用、コードの完全性の検証を人間の手で行っていては、現代の開発ペースに追いつけなくなり、ミスが多発することになります。手作業だけで、自動化に匹敵するスピード、規模、安全性を維持することはできません。自動化が必須となっている理由はここにあります。
脆弱性スキャン、アクセス制御、パッチ管理などのセキュリティタスクを自動化することで、問題を検出して修正し、脅威を未然に防ぐことができます。また、動きの速いCI/CDパイプラインで問題を見落とすリスクも軽減されます。
重要なイノベーションの1つは、アテステーションの自動化です。アテステーションでは、ビルドプロセスの一環として、ソフトウェアアーティファクトと、その作成者、作成時期、作成場所、作成方法に関するメタデータが生成されます。これにより、ソフトウェアが悪意を持って改ざんされていないこと、およびセキュリティ基準に準拠していることが証明されます。SigstoreやCosignなどのツールを利用することで、アーティファクトの構築時に自動で署名を付加して検証し、ソフトウェアのライフサイクル全体で信頼性の高い監査証跡を作成できます。
規制に伴う圧力や信頼性に関する厳しい要件がある業界にとって、アテステーションの自動化は便利なだけでなく、不可欠なものとなりつつあります。
ソフトウェアサプライチェーンの保護に関して、よく取り上げられる主な手法が2つあります。それがSCAとSASTです。
SCAとSASTを組み合わせれば万全です。SCAは借用したコードに存在するリスクに対する防御策に、SASTはビルドしたコードのミスに対する防御策になります。サプライチェーンのセキュリティについて真剣に取り組みたいのであれば、この両方が必要です。
多くの組織にとって、ソフトウェアサプライチェーンの保護は優先事項ですが、最大の課題はどこから始めればよいのか判断することにあります。ソースコード、ビルドツール、CI/CD、依存関係など、非常に多くの階層があるため、途方に暮れてしまうことが少なくありません。
ここで実践的な第一歩となるのが脅威モデリングです。脅威モデリングは、ソフトウェアシステム全体を可視化し、以下のような重要な質問を投げかけます。
すべてのコンポーネントに同じようにリスクがあるわけではありません。また、すべての脅威が単なる仮説というわけでもありません。依存関係の汚染やビルドスクリプトの改ざんのように、実際に確認されている攻撃手法もあります。脅威モデリングによって、実際のリスクに時間を割けるようになります。
OpenSSF End Users Working Groupなどの組織は、オープンソースソフトウェアの利用者向けに脅威モデルのサンプルを開発しています。このモデルは、よくあるリスクを検出し、SLSAやSSDFなどのフレームワークと関連付け、開発ライフサイクル全体でセキュリティ上の課題を特定するのに役立ちます。
ソフトウェアサプライチェーンの保護は、今や不可欠な要件となっています。ソフトウェアの相互接続が進んでいる今、あらゆるライブラリ、スクリプト、ツール、CI/CDジョブが攻撃ベクトルに変わる危険性を秘めています。
脅威が進化し、規制が強化される中で、ゼロトラストCI/CDやリアルタイム異常検出などが新たな標準となりつつあるのです。
まずは小さい規模で、リポジトリの保護、ビルドの隔離、あらゆる要素の検証に取り組みましょう。結局のところ、ソフトウェアの信頼性はその構築方法の信頼性から始まり、その信頼性を段階的に高めていかなければならないからです。
Splunkは、Forrester、ガートナー、IDCの3社からSIEMのリーダーに選出されました。最新のマジック・クアドラントレポートをダウンロードして、その理由をご確認ください。ダウンロードはこちら→
Splunkのセキュリティ製品とソリューションについて詳しくは、以下の各Webサイトをご覧ください。
この記事について誤りがある場合やご提案がございましたら、splunkblogs@cisco.comまでメールでお知らせください。
この記事は必ずしもSplunkの姿勢、戦略、見解を代弁するものではなく、いただいたご連絡に必ず返信をさせていただくものではございません。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。