# 依存関係の混乱
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。**
* **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
## 基本情報
要約すると、依存関係の混乱の脆弱性は、プロジェクトが**スペルミス**のあるライブラリ、**存在しない**ライブラリ、または**バージョンが指定されていない**ライブラリを使用し、使用されている依存関係リポジトリが**公開リポジトリから更新されたバージョンを収集**できる場合に発生します。
* **スペルミス**: `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**で見つかりました([**このブログ記事の詳細**](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)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグル