毎週のように、新たな脆弱性が、ソフトウェアサプライチェーンを構成するソフトウェア間の依存関係の脆弱さを示している。
ソフトウェア開発の大部分は、オープンソースのプラットフォームやサードパーティーベンダーの利点を活用して、期限どおりに成果を届けている。こうしたコードベースは、幅広い個人や組織によって維持されている。
ソフトウェアに必要なコンポーネントをすべて考慮すると、かなり長いチェーンになり、それらのコンポーネントにも依存関係がある。弱いリンクが1つでもあれば、ソフトウェアサプライチェーン全体が侵害され、ビジネスが危険にさらされる。SolarWindsとKaseyaは、ソフトウェアサプライチェーン攻撃の最近の注目すべき例であり、いずれのベンダーでも、その結果として顧客が侵害された。依存関係とリスクは驚くほど大きい。
複雑なソフトウェア依存関係
現代のアプリケーションには、数多くのオープンソースコンポーネントを含む、数百もの依存関係がある。開発者である私たちは、ソフトウェアやアプリケーションで使うコードの大半を自分たちで書いているわけではない。そのため、自分たちが書いて保守していないコードを完全に管理できず、セキュリティリスクが生じる可能性がある。
すべての依存関係が安全である限り、問題はない。残念ながら、ソフトウェアには未修正の脆弱性がかなり頻繁に存在し、ハッカーが悪用するとサプライチェーン攻撃につながることもある。
さらに悪いことに、安全なベンダーであっても不具合のあるアップデートによって脆弱になる可能性があり、それを検知するのは難しい。サプライチェーン攻撃では、ハッカーはコードベースを侵害するためにコミット権限を取得する必要がない。CI/CDパイプラインが、欠陥のあるベンダー製ソフトウェアをハッカーに代わって本番環境にデプロイしてしまうからだ。
結局のところ、セキュリティホールを拡散する目的で意図的に脆弱性が仕込まれたのか、罪のない開発者による単純なミスなのかは問題ではない。結果は同じだ。
関連記事:SBOM:ソフトウェアサプライチェーンを安全にする
ハッカーはどのようにサプライチェーンを侵害するのか
今年、Microsoftは「依存関係の混同(dependency confusion)」、別名「置換攻撃」と呼ばれる新たな手法についてホワイトペーパーを公開した。これは、信頼された企業環境におけるアプリ構築プロセスに焦点を当てたものだ。
プロジェクトは複数のソースからコンポーネントを取得できる。コードリポジトリには、プライベートなものとパブリックなものがある。
ハッカーがプライベートリポジトリの名前を1つでも見つければ、同じ名前のパブリックリポジトリを登録し、内部ライブラリであるはずのものの自分たちのバージョンをアップロードできる。パッケージマネージャーは複数のフィードに混乱し、パブリックリポジトリのほうがバージョン番号が高いため、内部リポジトリではなくパブリック版をダウンロードする可能性がある。
場合によっては、本番環境から直接情報を取得できる。例えば次のようなものだ。
https://website.com/package.json
package.jsonファイルには、インストール済みパッケージの名前とバージョンをnpmやyarnが保存する。このファイルはWebからアクセスできないようにすべきだ。残念ながら、このファイルが一般公開されていない場合でも、開発者が本番環境でソースマップファイルを無効にし忘れていると、ハッカーは情報を入手できる。これらの.mapファイルは通常、JavaScriptのデバッグに使われ、node_modulesへの参照を複数含んでいる。
攻撃者は、タイポスクワッティングなど、別の手法を使うこともある。人気のあるパッケージ名に似た名前のパブリックパッケージを公開し、開発者がpackage.jsonやcomposer.jsonで依存関係の名前を入力ミスするのを待ち受けるのだ。
もう1つの既知の手法は、細工したプルリクエストを提出することだ。ハッカーは、正当なバグ修正に見せかけて悪意のあるコードを隠すことがある。メンテナーがその変更を検証してコードをメインブランチにマージすると、本番環境へのデプロイが汚染される。
方法がどうであれ、アップデートの仕組みを侵害する攻撃は、ソフトウェアサプライチェーン攻撃でますます一般的になっている。
関連記事:コードデバッグおよびコードセキュリティの主要ツール
SolarWindsとKaseyaへの攻撃。
2020年、高度な脅威アクターが、最も広く使われているSolarWinds製品であるOrionを侵害し、アップデートに忍び込ませたマルウェアを展開した。このインシデントはSUNBURSTと改名された。
SolarWindsはネットワーク管理システム分野の有力企業で、米国国防総省を含む数十万の顧客を抱えている。同社の製品は、ユーザーへのアップデートやパッチの配布など、多くの作業を自動化する。最終的に影響を受けたインストールは100未満だったが、約18,000件がこの攻撃の影響を受ける可能性があった。
ハッカーは、Orionが使用するアップデートチャネルを、悪意のあるデジタル署名付きの.DLL(SolarWinds.Orion.Core.BusinessLayer.dll)で侵害し、さまざまな機関や企業から重要書類を窃取することに成功した。
.DLLは数日間休眠した後、複数のコマンド&コントロールサーバーに接続し、ファイル転送やシステム列挙などの追加指示を受けた。ハッカーは標的マシンに、カスタム版のCobalt Strikeも展開した。
米国政府は、この活動をロシア対外情報庁(SVR)に関連する脅威アクターによるものとした。米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)は、連邦政府機関にSolarWinds製品の削除と調査を指示した。
しかし、この措置で脅威が完全に排除されたわけではない。当局は敵対者を根絶できたかどうか断言できず、攻撃者が高度持続的脅威(APT)となったためだ。
2021年7月、脅威アクターはKaseyaを標的にした。同社は、ネットワークやエンドポイントの管理ツール、コンプライアンスサービス、自動化プラットフォームなど、さまざまなIT製品を提供している。多数の顧客には他社にサービスを提供するマネージドサービスプロバイダーも含まれており、Kaseyaはサプライチェーンの中核を担っている。
REvil脅威グループは、認証プロセスの回避、ペイロードのアップロード、細工したSQLコマンドのリモート挿入を可能にするWebインターフェースの脆弱性を悪用した。信頼されたVSAサーバーに接続されたクライアントは、アラートを発したり認証情報を要求したりすることなく、あらゆるタスクを実行してしまう。これが、ハッカーがKaseyaを標的にした理由だ。
ランサムウェアグループは、復号ツールを提供し企業がファイルを復旧できるようにする見返りとして、ビットコインで相当額の7,000万ドルを要求した。Kaseyaはサーバーを停止し、世界中の顧客に警告しなければならなかった。同社はCISAとFBIに支援を要請したが、被害はすでに発生していた。
関連記事:サードパーティーリスク管理(TPRM)ツールのベスト製品
サプライチェーン攻撃を軽減する方法。
1つの侵入口から脅威グループが広範な被害を引き起こせるため、サプライチェーン攻撃は今後もなくならず、ソフトウェアとITの広範な依存関係も変わりそうにない。数少ない明るい材料の1つとして、ある業界関係者は防御が改善していると見ており、状況の一定の改善につながる可能性がある。
サプライチェーン攻撃の発生を完全に防ぐ方法はないが、予防策を講じられないという意味ではない。役立つ対策をいくつか紹介する。
- ベンダーに対するポリシーを厳格化する。1つだけ使えばよい場合に、複数のプライベートレジストリから調達しない。
- プライベートリポジトリを登録するときは、タイポスクワッティングを防ぐため、同じ名前のパブリックリポジトリも登録する。
- アップデートプロセス自体が今やリスクになっているとしても、すべてのソフトウェアを最新の状態に保つ。
- すべての構成ファイルを保護し、本番環境には決してデプロイしない。少なくとも、アクセスを制限する。
- IT管理インターフェースの扱いには細心の注意を払う。特権アカウントは、非常に高いレベルのアクセス権を持つものを少数にとどめる。
- 複数層の防御を用意し、疑わしい挙動を早期に検知するため、SIEMやSOARなどの監視ツールを利用する。
- ネットワークをセグメント化する。低いレベルで発生した侵害によって、システム全体がさらされないようにする。





