# 依存関係の混乱
{% hint style="success" %}
AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
{% endhint %}
{% embed url="https://websec.nl/" %}
## 基本情報
要約すると、依存関係の混乱脆弱性は、プロジェクトが**スペルミス**のある名前、**存在しない**、または**バージョンが指定されていない**ライブラリを使用しているときに発生し、使用される依存関係リポジトリが**公開**リポジトリから**更新されたバージョンを取得する**ことを許可します。
* **スペルミス**:`requests`の代わりに**`reqests`**をインポート
* **存在しない**:**もはや存在しない**内部ライブラリ`company-logging`をインポート
* **バージョンが指定されていない**:**内部**の**存在する**`company-requests`ライブラリをインポートするが、リポジトリは**より新しいバージョン**があるかどうかを**公開リポジトリ**で確認する。
## 悪用
{% hint style="warning" %}
すべての場合において、攻撃者は被害者企業が使用しているライブラリの**名前を持つ悪意のあるパッケージを公開する**だけで済みます。
{% endhint %}
### スペルミスと存在しない
あなたの会社が**内部でないライブラリをインポートしようとしている**場合、ライブラリのリポジトリは**公開リポジトリ**でそれを探す可能性が非常に高いです。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンは非常に高い確率で侵害されるでしょう。
### バージョンが指定されていない
開発者が使用するライブラリの**バージョンを指定しない**、または**メジャーバージョン**だけを指定することは非常に一般的です。その後、インタープリターはその要件に合った**最新バージョン**をダウンロードしようとします。\
ライブラリが**既知の外部ライブラリ**(例えば、Pythonの`requests`)である場合、**攻撃者はあまりできることがありません**。なぜなら、彼は`requests`という名前のライブラリを作成できないからです(彼が元の著者でない限り)。\
しかし、ライブラリが**内部**である場合、例えばこの例の`requests-company`のように、**ライブラリリポジトリ**が**外部からの新しいバージョンの確認を許可する**場合、公開されている新しいバージョンを探します。\
したがって、**攻撃者が**会社が`requests-company`ライブラリの**バージョン1.0.1**(マイナーアップデートを許可)を使用していることを知っている場合、彼は**バージョン1.0.2**のライブラリ`requests-company`を**公開**し、会社は内部のものの代わりに**そのライブラリを使用する**ことになります。
## AWSの修正
この脆弱性はAWSの**CodeArtifact**で発見されました([**このブログ投稿の詳細を読む**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
AWSは、ライブラリが内部か外部かを指定できるようにすることで、外部リポジトリから内部依存関係をダウンロードするのを避けるように修正しました。
## 脆弱なライブラリの発見
[**依存関係の混乱に関する元の投稿**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)で、著者はJavaScriptプロジェクトの依存関係を含む数千の公開されたpackage.jsonファイルを検索しました。
## 参考文献
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
{% endhint %}