hacktricks/pentesting-web/dependency-confusion.md

80 lines
6.7 KiB
Markdown
Raw Normal View History

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