依存性混乱攻撃を防御するソフトウェア サプライ チェーン戦略

依存性混乱攻撃を防御するソフトウェア サプライ チェーン戦略

依存関係の混乱を回避するためのソフトウェア サプライ チェーン戦略 PlatoBlockchain データ インテリジェンスへの攻撃。垂直検索。あい。

"名前って何? 私たちがバラと呼ぶものは、他の名前で呼んでも同じように甘い香りがするでしょう。」 シェイクスピアが 2 年にこれらの言葉 (ロミオとジュリエット、第 2 幕、第 1596 場) を書いたとき、彼は名前は単なる慣習にすぎないと言いました。 本質的な意味はありません。 ジュリエットは名前ではなく、ありのままのロミオを愛しています。

しかし、シェイクスピアは知らず知らずのうちに、依存性混乱攻撃についても説明していました。

依存関係の混乱とは、コードで使用しているパッケージが自分のものではない場合に発生します。 これらは同じ名前ですが、本番環境で実行されているコードではありません。 同じ名前ですが、一方のパッケージはバラのような香りがし、もう一方のパッケージは…臭いです。

最近の調査レポートでは、組織の 41% ~ 49% が依存関係の混乱攻撃の危険にさらされていると推定されています。 OX Security の新しい調査によると、組織が依存関係の混乱攻撃の危険にさらされている場合、その資産の 73% が脆弱になることがわかっています。 この調査は、中規模および大規模組織 (1 人以上、8 人) に焦点を当てています。K+、80K金融、ゲーム、テクノロジー、メディアなど、幅広いセクターにわたって調査を行ったところ、あらゆる規模の組織のあらゆるセクターにリスクがあることがわかりました。 この調査では、1 億人を超えるユーザーがいるほぼすべてのアプリケーションが、依存関係の混乱に対して脆弱な依存関係を使用していることも判明しました。

この記事は、依存関係の混乱とそれを防ぐ方法を理解するのに役立つことを目的としています。

ダブル、ダブル

依存関係 (パッケージとも呼ばれます) は、ソフトウェアの構成要素です。 通常、これらのソフトウェアは、コミュニティ全体で開発されたか企業内で開発されたかにかかわらず、共通の必要なタスクを実行します。

パッケージ マネージャーは、依存関係をインストールし、更新し続けるためによく使用されます。 パブリックおよびプライベートのレジストリをスキャンしてパッケージの名前を調べ、他のすべての条件が等しい場合に、最も高いバージョン番号を選択します。 攻撃者はこれを利用して、同じ名前でより高いバージョンの「ダミー」パッケージをパブリック レジストリに配置します。

パッケージ マネージャーが XNUMX つの同一のパッケージ (XNUMX つはパブリック レジストリに、もう XNUMX つはプライベート レジストリにある) に遭遇すると混乱が生じます。そのため、「依存関係の混乱」と呼ばれています。 XNUMX つのパッケージは同一であるため、マネージャーは自動的に、より高いバージョンのパッケージをインストールすることを選択します。 - この場合は、攻撃者の悪意のあるパッケージです。

これにより、ハイジャッカーにソフトウェアへのバックドアが与えられます。 この時点から、彼らはデータ侵害を実行したり、知的財産を盗んだり、その他の信頼できるソフトウェア サプライ チェーンを侵害する可能性があります。 また、コンプライアンス違反を引き起こし、厳しい規制上の罰則が科せられる可能性もあります。

労苦とトラブル

依存性混乱攻撃にはさまざまなアプローチがあります。

  • 名前空間。 悪意のあるソフトウェア ライブラリをパブリック レジストリ (Python Package Index (PyPI) や JavaScript など) にアップロードすることによって npmレジストリ - あれは 似たような名前の 信頼できる内部使用ライブラリに対して、名前空間/URL チェックを省略したり、プライベート レジストリからのフェッチを強制しないシステムでは、誤って悪意のあるコードを引き込む可能性があります。 の 最近の PyTorch 依存関係の混乱事件 そのような例のXNUMXつです。
  • DNSスプーフィング。 DNS スプーフィングのような手法を使用すると、システムは、正規の内部 URL/パスのように見えるものを表示しながら、悪意のあるリポジトリから依存関係を取得するように指示される可能性があります。
  • スクリプティング。 ビルド/インストール スクリプトを変更するか、 継続的インテグレーション/継続的デリバリー (CI/CD) パイプライン構成では、システムがだまされて、ローカル リポジトリではなく悪意のあるソースからソフトウェアの依存関係をダウンロードする可能性があります。

物事は丁寧かつ丁寧に行われる

依存関係の混乱を防ぐために、次のプラクティスを確立してください。

  • パッケージマネージャーでポリシーを設定します。 パッケージ マネージャーがプライベート パッケージよりもパブリック パッケージを優先することを禁止します。
  • 必ず .npmrc ファイルを含めてください。 一般的な NPM をパッケージ マネージャーとして使用している場合は、特定の組織スコープ内のパッケージをフェッチする場所を指定する .npmrc ファイルを必ず含めてください。
  • パッケージ名をパブリック レジストリに予約します。 依存関係の混乱攻撃から保護するもう XNUMX つの方法は、パッケージ名をパブリック レジストリに予約して、ハイジャッカーがそのパッケージ名を使用できないようにすることです。したがって、パッケージ マネージャーを「騙して」悪意のあるパッケージをインストールさせることができません。

依存関係の混乱攻撃から完全に保護するには、組織は常に次のコマンドを使用する必要があります。 すべての内部パッケージの組織スコープ内部レジストリに公開する場合でも。 組織のスコープも NPM のパブリック レジストリに登録する必要があります。これにより、誰かがスコープを乗っ取って混乱を利用することを防ぐことができます。

パッケージ名も公開登録する必要があります。 たとえば、組織が Python 依存関係のパッケージ マネージャーとして人気の PIP を使用している場合、認識可能ですべてのプロジェクトで機能する厳密なサフィックスを持つ内部パッケージを作成する必要があります。 同じ名前の空のパッケージをプレースホルダーとしてパブリック レジストリ PyPI にアップロードします。

パッケージ名をパブリック レジストリに予約するもう XNUMX つの理由は、誰かが (悪意があるかどうかにかかわらず) パッケージ名を予約した場合、開発者はプライベート レジストリ内のすべてのパッケージ名をパブリック レジストリでまだ予約されていない名前に変更する必要があるためです。 これは長くて退屈なプロセスになる可能性があります。

すべてのパッケージ レジストリでユーザーがパッケージ名を予約できるわけではないことに注意することが重要です。そのため、予約できるパッケージ レジストリを必ず見つけてください。

熊に追われて退場

依存関係の混乱攻撃は、世界中の組織に深刻かつ差し迫ったサイバーセキュリティの脅威をもたらします。 全組織の約半数が危険にさらされており、それらの組織の資産の 73% が危険にさらされています。 この増大する脅威に対抗するには、組織は強力な予防措置を導入し、サイバーセキュリティのベスト プラクティスを採用する必要があります。

シェイクスピアのバラは、依存性混乱攻撃のリスクを何百年も前から予見していたかもしれませんが、吟遊詩人の別の引用には、依存性混乱攻撃から身を守るための知恵が含まれているかもしれません。 「すべての目で交渉し、代理人を信用しないようにしましょう。」 (何もないことについての騒ぎ、第 2 幕、シーン 1)

タイムスタンプ:

より多くの 暗い読書