APT&標的型攻撃
ソフトウェアサプライチェーンのセキュリティリスクを解説
昨年末、各方面で報じられたSolarWinds社製ネットワーク監視アプリケーション「Orion」を侵害した攻撃事例はサイバーセキュリティ業界や世間を震撼させたと同時に、サプライチェーン攻撃に対する注意を世界中で高めさせるきっかけともなりました。本ブログ記事では、ソフトウェアの開発プロセスを例にサプライチェーンの一連の流れについて解説すると共に、これまでに確認されたソフトウェアサプライチェーン攻撃の事例を織り交ぜながら今後発生する可能性のある攻撃について解説します。
昨年末、各方面で報じられたSolarWinds社製ネットワーク監視アプリケーション「Orion」を侵害した攻撃事例はサイバーセキュリティ業界や世間を震撼させたと同時に、サプライチェーン攻撃に対する注意を世界中で高めさせるきっかけともなりました。サプライチェーンとは「製品が作られて顧客に届くまでの一連の流れ」のことです。冒頭に例示したSolarWinds事例に当てはめた場合、「製品」とはSolarWinds社の「Orion」というソフトウェアであり、それが顧客に届くまでの一連の流れの中で侵害されたということになります。サプライチェーン攻撃の中でも、このようなソフトウェアサプライチェーンを侵害する攻撃自体は目新しいものではなく、実際この種の脅威は以前から確認されてきました。本ブログ記事では、ソフトウェアの開発プロセスを例にサプライチェーンの一連の流れについて解説すると共に、これまでに確認されたソフトウェアサプライチェーン攻撃の事例を織り交ぜながら今後発生する可能性のある攻撃について解説します。
■ソフトウェアサプライチェーンにおけるセキュリティリスク
ソフトウェア開発者はどのような方法を用いるにせよ、複雑なプロジェクトを簡単なタスクに分割する必要があります。これにより利用する問題追跡ソフトウェアの中でタスクが定義され特定の開発者への割り振りが可能になります。タスクが割り当てられた開発者はタスクに対するコードの一部を書きます。作成されたコードは開発者によってテストされ、変更箇所はソースコード管理ソフトウェア内にアップロードされます。
アップロードされたコードは、継続的インテグレーション/継続的デリバリ(CI/CD)パイプラインによって処理されます。CI/CDパイプラインは、ビルド、テスト、または選択したプロジェクトへの最終的なデプロイメントを実施する特定のタスクを実行します。
弊社が本ブログ記事で定義したソフトウェアのサプライチェーンにおける一連の流れの各段階にはそれぞれのセキュリティリスクおよび影響力が存在します。
例えば、問題追跡ソフトウェアを運用管理する関係者によってセキュリティが侵害される可能性があります。これは情報セキュリティの管理を担当する内部関係者の場合もあれば、ソフトウェアの脆弱性に携わる業務担当者の場合もあります。一方で、サプライチェーン内の他の段階が攻撃された場合と比較した場合、この事例での影響被害は比較的少ないと考えられます。なぜなら、サプライチェーン内の他の段階は多くの場合タスクが攻撃対象となるからです。そのため、この事例については割愛し、本ブログ記事では認証に関連するセキュリティ侵害について解説します。
サプライチェーン全体のセキュリティ強度は最も弱い部分によって左右されます。このため、セキュリティのベストプラクティスに準拠せずにパスワードを再利用したり不適切な認証メカニズムを採用した場合、攻撃者によるシステムへのアクセスを許してしまう要因となり、情報漏えいによる多大な被害を受ける可能性があります。
■ソフトウェアサプライチェーンにおける開発者とソースコード管理
トレンドマイクロのソフトウェアサプライチェーンにおいて必須となるのが開発者であり、弊社製品のコードは開発者によって構成されます。よって、人的なセキュリティの弱点やセキュリティリスクの可能性について考慮することは重要です。これは開発者を人工知能に置き換えるよう提案しているのではなく、開発者が直面しうるリスクについて事前に見識を備えさせることを推奨するものです。
最近では脆弱性リサーチャを標的とする攻撃事例が確認されています。技術的観点から得た興味深い事実は、この脅威がVisual Studioのプロジェクトファイルの中、特にprebuildイベント内部に隠蔽されており、PowerShellを悪用したペイロードを送り込んでいたことです。この事例では2つ注目すべき点がありました。1つ目は「仲間」間の信頼度、2つ目は開発者に最も当てはまる、より大きなソースコードを採用しサードパーティのプロジェクトと統合する点です。どのソースコードとどのプロジェクトを統合するかについては深く考慮する必要があります。そのため、使用されているコード、ソフトウェア、プラグイン、コンテナなどのソースを十分に確認する必要があります。この問題については以前、オンラインコーディングプラットフォームに関するブログ記事で取り上げました。
開発者はサプライチェーンの次の段階で利用するソースコード管理ソフトウェアにもアクセスできます。ソースコード管理ソフトウェアにアクセスするには認証情報の入力が必要ですが、アクセスするたびに認証情報を入力するのを省くために認証情報を保存されている場合があります。認証情報を保存することは情報漏洩のリスクを高めることにもなります。さらに保存した認証情報が暗号化されていない場合、情報漏洩による影響被害が大きくなります。
DevOpsコミュニティ内では共通するパターンが確認できました。DevOpsコミュニティを利用する開発者の多くは認証情報を暗号化されていない状態(テキストベースの設定ファイルまたは環境変数)で保存します。これらの認証情報にはサービストークン、ユーザ名、電子メールアドレスなども含まれます。
これらのセキュリティリスクに対する認識は些か過剰であるかのように思われますが、「A chain is no stronger than its weakest link. (鎖の強さは最も弱い輪によって決まる。)」という英語のことわざがあることも事実です。よって、パスワード管理ソフトウェアを利用するなどリスクを下げるための予防策は検討するに値します。
開発者はハードコードした認証情報をソースコード管理ソフトウェアにアップロードするべきではありません。例えば、IaC(Infrastructure as Code)を使用する場合は一般的に認証情報の保存方法について考慮する必要があります。
■CI/CDパイプライン
サプライチェーンにおける次の段階は、CI/CDパイプラインです。ソフトウェアベンダ間の競争は激しく、一般にJenkins、GitLab、TeamCity、Azure DevOpsなどが知られています。
CI/CDパイプラインは以下のように分けることができます。
システムへのアクセス
セキュリティの観点からこれらのシステムへのアクセス権は制限する必要があり、誰もがアクセスできる状態にあってはなりません。システムへのアクセス権は企業ネットワーク内部に隠匿されているべきであり、特定の役割、つまり特別にアクセス権限が付与されたユーザだけがアクセスできるようにする必要があります。またインターネット上に露出しているだけでもセキュリティリスクがあります。過去の事例で確認されたように、利用するソフトウェアやポートに内在する脆弱性がサイバー犯罪者によって侵害される可能性があるからです。
システム構成
上記の他にセキュリティリスクの要因となるのが構成不備です。特定の環境にはその環境に適したシステム構成を構築することが推奨されます。例えばある企業では複数のユーザがシステムにアクセスする必要があると同時に全ユーザが異なる役割を担当しているとします。このような状況下ではロールベースのセキュリティを構成する必要があります。しかし2019年8月5日公開のブログ記事で解説したように、オープンソースの自動化サーバ「Jenkins」の初期設定をそのまま利用することは結果としてセキュリティ問題につながる可能性があります。ソフトウェアの複雑さと構成オプションの増加に伴い、一般的なソフトウェアの構成不備によるセキュリティリスクについては事前にテストすることが強く推奨されます。
ソースコードの取得
この段階では2つのパターンに分けることができます。
Azure DevOpsサーバの場合のように、ソースコード管理ソフトウェアがCI/CDに統合されている場合:
上記の場合ソースコード管理ソフトウェアは異なる環境で動作しているため、アクセストークンあるいは認証情報をシステム内部に保存する必要があります。
ソフトウェアのソースコードに認証情報が混入した状態で公開された場合、攻撃者によって悪意のあるソースコードに改ざんされる可能性があります。よって、ソースコード内の認証情報をどのように保管するかは非常に重要です。しかし、CI/CDツール内部で用いられているセキュアではない保存方法が確認されていたり、Jenkinsプラグインの事例で解説したように一部のサードパーティの拡張機能の中には認証情報を暗号化せずに平文形式で保存してしまうものがあるなど情報漏洩につながる脆弱性が発見されたことは特筆すべき点と言えます。
ビルド環境の構成
この段階で懸念されるセキュリティ事項は、渡される認証情報に関連しています。ビルドする際に暗号化されていない認証情報を渡してしまったり、ビルドのアーティファクトとして認証情報が混入した状態で保存されてしまったりするリスクがあります。基本的に一部の構成要素の前提条件には機密情報が含まれており、通常はビルド後にも残されます。
ビルド
この段階では実際のソースコードをターゲットのバイナリ形式にコンパイルします。この段階を狙った攻撃はSolarWinds社の事例やCCleanerの事例が確認されています。
攻撃者がこの段階を狙うのには論理的な理由が2つあります。第一にこの段階はサプライチェーンにおける最終段階の1つであり、この段階を通過すればその後の検証があまり行われないことを意味します。第二に、最近の傾向として作成された実行バイナリには一般的にデジタル署名が付与されており、署名後にコードの修正作業を行うとデジタル署名が無効化されます。署名を再付与しようとしても、攻撃者が署名に使われた秘密鍵を保有していない場合は正しい署名を生成することができません。このため攻撃者にとってビルドの段階で悪意のあるコードを埋め込むことは、デジタル署名の検出を回避できるため好都合と言えます。これらを理由にビルドプロセスはソフトウェアサプライチェーン攻撃を遂行するために攻撃対象となります。ただし、すべてのソフトウェアがデジタル署名付きで出荷されるわけではありません。
デジタル署名について言及する場合、デジタル証明書と紐づく秘密鍵を公開しないよう注意する必要があります。デジタル署名に用いた秘密鍵が公開されてしまった場合、攻撃者はその証明書を悪用してデジタル署名を有効化させたいソフトウェアに署名を付与することができてしまうため、デジタル証明書を失効させなければならなくなります。
■デプロイメントまたはプロダクトデリバリ
CI/CDツールに含めることが可能なサプライチェーンの最後の段階はデプロイメントです。まず初めにデプロイメントプロセスをCI/CDツール内で指定させ、ビルドやテストが成功したときに起動させることができます。このためアーキテクチャ情報は認証情報やその他の機密情報とともに混入する可能性があり、それらを適切に管理する必要があります。
攻撃者にとって最も簡単にソフトウェアを改ざんする方法は、ソフトウェア全体を置き換えることです。デジタル署名がされていないソフトウェアの場合、悪意のあるコードを注入するコードインジェクション攻撃の手口も確認されています。実例としてWordPress使用サイトへのコードインジェクション攻撃について解説しました。この事例ではWordPress本体やプラグインの脆弱性あるいはセキュリティ上の弱点を侵害したのちに悪意のあるコードスニペットが注入され遠隔操作が実行されたほか、SEOポイズニングやフェイクニュースを拡散するために悪用されていました。
実行バイナリへのコードインジェクション攻撃も可能ではありますが、上記の攻撃と比較した場合、コンパイルされたバイナリおよび攻撃者のスキルに依存します。またバイナリがデジタル署名されている場合、改ざんした事実が簡単に発見されてしまうため効率的ではありません。このため攻撃者にとっては単純にバイナリを置き換える方が好都合です。
しかしバイナリが格納されている配信サーバをハッキングし正規ソフトウェアを改ざんすることは容易なことではなく、実行するにしても多大なリソースを必要とします。
上記以外にもフィッシングやネット詐欺キャンペーン、DNSスプーフィングの手法に正規ソフトウェア企業の知名度を利用して正規アカウントを乗っ取り不正なリンク先を拡散し、悪意のあるプログラムやPUA(潜在的に迷惑なアプリケーション、Potentially Unwanted Application)をダウンロードさせようと試みる攻撃手口が確認されているほか、セキュリティベンダを騙る偽サイト上で正規ソフトウェアを配信していると偽り、不正プログラムやPUAをインストールさせようと試みる手口も確認されています。
■まとめ
本ブログ記事では、ソフトウェアサプライチェーンにおける基本的なセキュリティリスクについて概説しました。この問題は複雑ではあるものの喫緊の課題でもあります。2021年セキュリティ脅威予測でも述べたように、企業は2021年末までにワークロードの大半をクラウド上で実行すると予想されています。企業は新型コロナウイルスのパンデミックに対応するために、サイバーセキュリティリスクを考慮せずに新しいソフトウェアを導入している場合があります。新しいソフトウェアを導入する場合は、セキュリティリスクを考慮し、適切な対策を講じる必要があります。
過去に発生した主なサプライチェーン攻撃については、仮想化技術を扱う企業「VMware社」に所属するOSS開発者「Martin Vrachevs氏」のGitHubページ上にて、2003年からこれまでに確認されたサプライチェーン攻撃に関連する情報が共有されています。ご参考まで。
参考記事:
• 「Identifying Weak Parts of a Supply Chain」
By: Trend Micro
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)
記事構成:岡本 勝之(セキュリティエバンジェリスト)
高橋 哲朗(スレットマーケティンググループ)