In this article
ソフトウェアサプライチェーン攻撃
攻撃の事例とその防止方法
ソフトウェアサプライチェーン攻撃とは?
現在のソフトウェアサプライチェーンは、その多くがソフトウェアの提供プロセスを迅速化・効率化するサードパーティ製リソースで構成されています。通常、組織はこうしたリソースを何らかの形で自社システムに組み込む必要があり、外部のリソースがシステム内で適切に機能できるよう、内部インフラへのアクセスを許可します。
攻撃者がこうした外部リソースのいずれかにある弱点を見つけると、システム全体に悪影響が及ぶ可能性があります。だからこそ、サプライチェーンセキュリティは重要です。
ソフトウェアサプライチェーン攻撃の種類
サプライチェーンの脅威にはさまざまな種類があります。よく見られるものをいくつかご紹介します。
サードパーティのソフトウェアプロバイダー
Webサイトビルダー
サードパーティのデータストア
水飲み場型攻撃
これらの攻撃はどれも手間がかからず、悪意のあるユーザーに大きな見返りをもたらします。攻撃者は、こうしたサードパーティのサイトやベンダーのいずれかを改ざんするだけで、(初期設定のままなら)数千人のユーザーにアクセスできてしまいます。これこそが、サプライチェーンの危険性です。チェーンの上流(サードパーティのプロバイダーやWebサイトなど)が侵害されると、下流のあらゆるものもすぐに危険にさらされます。攻撃者は、遠隔操作や情報窃取を可能にするマルウェアを配信したり、ファイルから機密データを直接抜き取ったりして、こうした下流のユーザーを狙います。
サードパーティのソフトウェアプロバイダー
今日の組織は、直接的な依存関係と推移的な依存関係の両方を通じて、さまざまな用途でサードパーティのソフトウェアプロバイダーを利用しています。攻撃者は、そのソフトウェアを侵害するだけで、製品を利用する数百から数千の顧客にアクセスできます。
Webサイトビルダー
Webサイトビルダーのテンプレートやプラグインが侵害されると、Webサイトの内部機能が攻撃の危険にさらされます。
サードパーティのデータストア
企業は、顧客の機密情報から組織のセキュリティ体制、従業員、戦略に関する詳細まで、さまざまなデータの処理や保管をサードパーティ企業に委託しています。
水飲み場型攻撃
水飲み場型攻撃は、ユーザーが機密データを扱う際によく訪れるWebサイトを標的にします。一般に、攻撃者は特定の業界や組織、または人々のグループが利用する公開Webサイトを狙います。こうしたWebサイトを使って訪問者にマルウェアを配信します。多くの場合、正規サイトから偽サイトへユーザーをリダイレクトします。
ソフトウェアサプライチェーン攻撃の事例
Help Net Securityによると、ソフトウェアサプライチェーン攻撃は2021年に300%を超える増加を記録しました。ソフトウェアサプライチェーン攻撃は、複数の企業や顧客に一度に影響を及ぼすため、ニュースで大きく取り上げられ、広く知られることも少なくありません。
サードパーティのベンダーやそのユーザーに大きな被害をもたらした、よく知られるサプライチェーン攻撃の事例をいくつかご紹介します。
SolarWinds
2020年初頭のこの攻撃では、攻撃者がSolarWinds Orionのアップデートに悪意のあるコードを埋め込みました。SolarWinds Orionは、インフラストラクチャの監視・管理プラットフォームです。SolarWindsのユーザーが感染したアップデートをデバイスに適用した結果、攻撃者は複数の企業や政府機関の機密データにバックドア経由でアクセスできるようになりました。
その1年後、メールセキュリティベンダーMimecastへの2021年初頭の攻撃も、SolarWindsの侵害による下流への影響の1つでした。MimecastはSolarWinds Orionを利用していました。攻撃者がSolarWindsに感染コードを埋め込んだことで、Mimecastを含む約18,000社のSolarWinds顧客が影響を受けました。
この感染コードは、ソフトウェアサプライチェーンマルウェアをMimecastのシステムに自動インストールし、Mimecastが発行した証明書、顧客サーバーの接続情報、メールアドレス、ユーザー認証情報などの機密データを侵害しました。
依存関係の混同(2021年)
前年、新たなサイバーサプライチェーン攻撃の手法である依存関係の混同が、Mediumの寄稿者でプログラマーのAlex Birsanによって発見されました。彼は、Yelp、Tesla、Apple、Microsoftといった大手企業の内部システムにアクセスし、データを持ち出すことに成功しました。
Alexは、社内で使われるプライベートパッケージと同じ名前のnpmまたはyarnパッケージを作成して攻撃を実行しました。同じ名前のパッケージのうち、Alexのもののほうが新しかったため、システムはデフォルトで悪意のある公開パッケージを取得しました。Alexはブラックハットハッカーではありませんでしたが、依存関係の混同の脆弱性を発見したことで、npm/yarnパッケージの命名規則が大規模な内部システムを危険にさらす可能性があることが明らかになりました。
CodeCov(2021年)
コードカバレッジツールのCodeCovは、開発者がテストを実行すると、機械可読形式のレポートを生成してサーバーにアップロードします。攻撃者は、CodeCovがレポートのアップロードに使用していたcurl|bashスクリプトを悪用しました。サーバーをホストする`private write, public read`のCDNバケットにアクセスし、bashスクリプトを改ざんしたのです。この改ざんされたスクリプトを使って顧客のCIパイプラインに侵入し、CodeCovの顧客から環境変数を盗み出しました。
サイバーサプライチェーン攻撃の4つの侵入経路
近年のサプライチェーン攻撃からわかるように、攻撃者はさまざまなサードパーティプロバイダーやコンポーネントを通じて、企業のソフトウェアサプライチェーンに侵入します。そのため、サプライチェーンは非常に広範な攻撃対象領域になり得ます。
一般的に、攻撃者がよく利用する侵入経路はいくつかあります。
ソースコード:SolarWindsの事例のように、攻撃者は独自のコードを直接改ざんできます。高い権限を持つユーザーの認証情報を入手する、リポジトリにアクセスする、あるいは開発者が書いたコードに存在し、静的コード解析ツールで検出されなかった脆弱性を悪用するだけです。
依存関係:組織は、アプリのライブラリ、OSパッケージ、ベースイメージなど、さまざまなサードパーティの依存関係を利用できます。直接的か推移的かを問わず、依存関係が侵害されると、それを使用するすべての企業に脆弱性が生じます。
ビルドツール:CI/CDパイプラインをはじめとする開発用ビルドツールは、自動化を実現するために設計されています。人の介入をほとんど、またはまったく必要とせず、迅速な変更と自動テストを可能にします。そのため、CodeCovの攻撃で起きたように、感染したビルドツールを開発チームが特定するのは困難な場合があります。
デプロイ:SolarWindsとAsusの攻撃には共通点があります。どちらもアップデート時に悪意のあるコードをデプロイしました。ソフトウェアサプライチェーン攻撃を防ぐには、特に継続的デプロイ(CD)を自動化している場合、すべてのデプロイが安全であることを十分に確認する必要があります。
ソフトウェアサプライチェーン攻撃を防ぐ方法
企業は、開発・リリースプロセスにセキュリティ対策を組み込むことで、ソフトウェアサプライチェーン攻撃を防止できます。セキュリティは事業部門間で責任を共有し、開発のあらゆる段階に組み込む必要があります。これがDevSecOpsのアプローチです。
ソフトウェア構成分析
まずはソフトウェア構成分析(SCA)から始めるのが効果的です。SCAを使えば、ソフトウェアの依存関係をすべて把握できるため、サードパーティのベンダーやコンポーネントに問題が発生した際、迅速に対応できます。SCAの基本は、ソフトウェアに何が含まれているか、サードパーティのコンポーネントがどこにあるかを正確に把握することです。Snyk Open Sourceは、業界をリードするインテリジェンスを活用してアプリケーションの安全を守るSCAツールです。
SCAを導入するうえで、ソフトウェア部品表(SBOM)の作成は欠かせません。SBOMには、どのアプリケーションにどのコンポーネントが含まれているかが詳細に記載されます。
静的アプリケーションセキュリティテスト
もう1つ欠かせないセキュリティ対策が、静的アプリケーションセキュリティテスト(SAST)です。組織内で開発したソースコードをスキャンし、インジェクションの可能性や設計上の一般的な不備など、悪用されやすい脆弱性を検出することに特化しています。Snyk CodeはSASTツールで、ほとんどのIDEに直接統合できます。コードの記述中にスキャンし、実行可能な修正アドバイスを提供します。
コンテナイメージのスキャン
CIビルドエージェントのイメージやアプリケーションのベースイメージに潜むリスクを特定するには、コンテナイメージのスキャンが欠かせません。コンテナスキャンツール(Snyk Containerなど)を使えば、安全なベースイメージの推奨を受けられるほか、コンテナの脆弱性を継続的に監視し、ベースイメージやDockerfileのコマンドで使用されるオープンソース依存関係の脆弱性を修正できます。
セキュリティのシフトレフト
最後に、開発者がセキュリティツールを理解し活用できるよう支援することで、セキュリティのシフトレフトを実現できます。また、強固なポリシーを整備し、安全なソフトウェア開発ライフサイクル(SDLC)を構築することは、サプライチェーン攻撃を含むさまざまなリスクの軽減に重要です。
日々の開発プロセスにセキュリティを組み込む最善の方法は、開発のあらゆる段階でSCA、SAST、コンテナスキャンなどのツールを活用することです。さらに、強固なセキュリティポリシーを策定し、徹底することも重要です。その効果的な方法の1つが、自動化されたポリシー・アズ・コード(PaC)を導入することです。開発者が規則や規制のリストを手作業で把握し続けなくても済むよう、適切なガードレールを設けられます。
Snykがソフトウェアサプライチェーンの保護に役立つ方法
Snykのソフトウェアサプライチェーンセキュリティソリューションは、Snyk Open SourceとSnyk Containerを活用して、依存関係とベースイメージをスキャン・監視し、プロジェクトに影響する既知および新たな脆弱性を検出します。どちらのソリューションも、最先端のSnyk Intel Vulnerability Databaseを基盤としており、市場にある他のデータベースより平均47日早く脆弱性を検出できます。また、サプライチェーンマルウェアや悪意のあるパッケージも検出します。さらに、開発で使用する前にSnyk Advisorを活用して、安全性の高いパッケージや公開コンテナベースイメージを見つけることができます。
サプライチェーンの保護に役立つSnykのツールと、サプライチェーンセキュリティの現状について、各種リソースをご覧ください。