hacktricks/pentesting-web/dependency-confusion.md
2023-07-07 23:42:27 +00:00

6.8 KiB
Raw Blame History

依存関係の混乱

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本情報

要約すると、依存関係の混乱の脆弱性は、プロジェクトがスペルミスのあるライブラリ、存在しないライブラリ、またはバージョンが指定されていないライブラリを使用し、使用されている依存関係リポジトリが公開リポジトリから更新されたバージョンを収集できる場合に発生します。

  • スペルミス: requestsの代わりに**reqests**をインポートする
  • 存在しない: 存在しない内部ライブラリであるcompany-loggingをインポートする
  • バージョンが指定されていない: 内部の存在するcompany-requestsライブラリをインポートするが、リポジトリは公開リポジトリをチェックしてより新しいバージョンがあるかどうかを確認する

攻撃手法

{% hint style="warning" %} いずれの場合でも、攻撃者は犠牲者の会社が使用しているライブラリの名前を持つ悪意のあるパッケージを公開するだけで済みます。 {% endhint %}

スペルミス & 存在しない

もし会社が内部ではないライブラリをインポートしようとしている場合、おそらくライブラリのリポジトリはそれを公開リポジトリで検索しようとします。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンは高い確率で侵害されるでしょう。

バージョンが指定されていない

開発者がライブラリのバージョンを指定しないか、メジャーバージョンのみを指定することは非常に一般的です。その後、インタプリタはこれらの要件に合う最新バージョンをダウンロードしようとします。
ライブラリが既知の外部ライブラリPythonのrequests)である場合、攻撃者はあまりできません。なぜなら、requestsというライブラリを作成することはできないからです(元の作者でない限り)。
ただし、この例のようにライブラリが内部のrequests-companyのような場合、ライブラリリポジトリ外部から新しいバージョンをチェックすることができる場合、公開で利用可能な新しいバージョンを検索します。
したがって、攻撃者が会社がrequests-companyライブラリバージョン1.0.1(マイナーアップデートを許可)を使用していることを知っている場合、彼はライブラリrequests-companyバージョン1.0.2公開することができ、会社は内部のライブラリの代わりにそれを使用するでしょう。

AWSの修正

この脆弱性はAWSのCodeArtifactで見つかりました(このブログ記事の詳細を読んでください)。
AWSは、内部の依存関係を外部のリポジトリからダウンロードしないようにするために、ライブラリが内部または外部であるかを指定できるように修正しました。

脆弱なライブラリの検出

依存関係の混乱に関する元の投稿では、脆弱なJavaScriptプロジェクトの依存関係を含む数千の公開されたpackage.jsonファイルを検索しました。

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
  • サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
  • The PEASS Familyを見つけて、独占的なNFTのコレクションを発見してください。
  • 公式のPEASSHackTricksのグッズを手に入れましょう。
  • 💬 [**Discordグル