
アプリケーション開発では、効率的な機能や他の機能のサポートのために、サードパーティ製またはオープンソースの依存関係を統合することがしばしば必要になります。しかし、攻撃者が依存関係を通じて悪意のあるコードをアプリケーションに持ち込む可能性があるため、セキュリティ専門家が依存関係を懸念する理由が今や存在します。
依存性混乱攻撃は比較的新しいものですが、これらのサイバーセキュリティ脅威は既に組織に甚大な被害をもたらす可能性があることが示されています。依存性混乱攻撃に関する新たなセキュリティ研究の詳細に加え、これらの攻撃の仕組み、最もリスクの高い人物、そしてその軽減方法について解説します。
ジャンプ先:
- 依存混乱攻撃の状態
- 依存性混乱攻撃とは何ですか?
- 依存性混乱攻撃の影響を受ける可能性があるのは誰でしょうか?
- 依存性混乱攻撃を防ぐ方法
依存混乱攻撃の状態
DevOpsソフトウェアのサプライチェーンセキュリティ企業であるOX Securityの最新調査によると、10億人以上のユーザーを抱えるアプリケーションのほぼすべて、そして3,000万人のユーザーを抱えるアプリケーションの50%以上が、依存性混同攻撃に対して脆弱な依存関係を使用していることが明らかになりました。また、リスクの高い組織では、資産の73%が依存性混同攻撃にさらされている可能性が高いことも明らかになりました。
OX Security のレポートの調査結果は、今年初めに Orca Security が発表したレポートと似ており、組織の約 49% が依存関係混乱攻撃に対して脆弱であると報告されています。
依存性混乱攻撃の例
依存関係の混乱を狙った攻撃の注目すべき例として、2022年12月にPyTorchが報告したPyTorchの悪意のある依存関係パッケージが挙げられます。同組織は、Python Package Indexコードリポジトリへの侵害の可能性についてユーザーに警告しました。このインシデントでは、攻撃者はPyPIコードリポジトリに悪意のある依存関係をインストールし、悪意のあるバイナリを実行することでサプライチェーン攻撃を実行しました。
2022年には、攻撃者が人気のオープンソースパッケージnode-ipcに悪意のあるコードを注入したという、関連する別のインシデントが発生しました。このインシデント発生期間中、ロシアとベラルーシにあるコンピューターから数百万件のファイルが消去されました。
依存性混乱攻撃とは何ですか?
依存関係混乱攻撃では、攻撃者はプライベートリポジトリにある正規のソフトウェアパッケージと同じ名前のソフトウェアパッケージを、パブリックパッケージリポジトリにアップロードします。プライベートリポジトリとパブリックリポジトリの両方に同じ名前のソフトウェアパッケージが存在すると、開発者は悪意のあるバージョンのパッケージを使用するように仕向けられます。開発者が誤ってこの攻撃に引っかかったり、パッケージマネージャーがパブリックリポジトリで依存パッケージを検索したりすると、正規のアプリが悪意のあるコードをインストールし、ハッカーがそれを悪用して攻撃を仕掛ける可能性があります。
依存関係の混乱はサプライチェーンの問題の一種です。このトピックは、セキュリティ研究者のアレックス・バーサン氏が2021年にMediumの投稿で、依存関係の混乱の手法を用いてApple、Microsoft、Yelp、PayPalなど35社以上の大手企業に侵入したことを公表したことで注目を集めました。
依存性混乱攻撃の仕組みに関する技術的な詳細
依存関係の混乱をうまく利用するために、ハッカーはまずプライベート リポジトリ内のパッケージ名を識別し、同じパッケージ名をパブリック リポジトリに登録します。こうすることで、アプリケーションの新しい更新がインストールされると、プライベート レジストリ内の安全なバージョンではなく、パブリック レジストリ上の悪意のあるバージョンがフックされるようになります。
OX SecurityのCEO兼共同創設者であるNeatsun Ziv氏は、TechRepublicの取材に対し、npm、pip、RubyGemsといったほとんどのアプリケーションパッケージマネージャが、プライベートレジストリよりも先にパブリックコードリポジトリで依存関係をチェックすることをハッカーは理解しているため、プライベートレジストリにある同じ名前のパッケージをパブリックレジストリに登録しようとすると説明しました。例えば、開発者がプライベートリポジトリまたは社内リポジトリにホストされているパッケージをインストールしたいが、そのパッケージが保存されているプライベートリポジトリにアクセスできない場合、開発者の依存関係マネージャはパブリックレジストリで同様の名前のパッケージを探し、代わりにそれを使用しようとします。
図A

依存性混乱攻撃の影響を受ける可能性があるのは誰でしょうか?
OX Securityの調査では、フィンテック、メディア、SaaS企業など、幅広い業種の1,000以上の組織における54,000以上のリポジトリを調査し、あらゆる規模の組織が依存性混同攻撃の脅威にさらされていることが明らかになりました。Ziv氏は、ほとんどの組織が脆弱性のあるパッケージや、依存性混同攻撃に対して脆弱な登録無料のパブリックレジストリを使用しているため、リスクにさらされていると説明しました。
「最新の調査結果は非常に憂慮すべきものです。この種の攻撃は、組織資産の完全性とセキュリティを侵害するだけでなく、組織の従業員やユーザーに世界中に影響を及ぼす可能性があります。さらに、組織がリスクにさらされている際に、その資産の73%が脆弱であるという事実は、規模や業種を問わず、多くの組織がいかに脆弱な状況にあるかを如実に示しています」とジブ氏は述べています。
依存性混乱攻撃を防ぐ方法
Ziv氏によると、依存関係の混乱を防ぐ最も効果的な方法は、プライベートなパッケージ名を公開レジストリに予約し、誰もそれらを公開レジストリに登録できないようにすることです。ソフトウェア開発者は、JavaScriptを使用している場合は、npmなどのパッケージ管理サイトにアクセスしてアカウントを作成し、パッケージ名を登録することでこれを実現できます。これにより、開発者はソース(つまり公開リポジトリ)での攻撃を防ぎ、プロジェクトを依存関係の混乱攻撃にさらす人為的ミスのリスクを軽減できます。人為的ミスのリスクには、適切なコードレビューの欠如、ビルドシステムの設定ミス、セキュリティのベストプラクティスの欠如、検証されていない外部依存関係などがあります。
開発者が依存関係の混乱に対処するもう一つの方法は、新しいパッケージをインストールする前、または最新バージョンにアップデートする前に、パッケージソースを検証することです。幸いなことに、多くのパッケージマネージャーでは、インストール前にパッケージの内容を確認することができます。
ソフトウェア開発者は、パッケージ名にプレフィックス、ID、または名前空間を使用できるパッケージマネージャーを使用することで、依存関係の混乱を防ぐこともできます。これにより、内部依存関係がプライベートリポジトリから取得されることが保証されます。