mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
64 lines
5.6 KiB
Markdown
64 lines
5.6 KiB
Markdown
# 依赖混淆
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取 PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](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 来分享你的黑客技巧**。
|
||
|
||
</details>
|
||
|
||
## 基本信息
|
||
|
||
简而言之,当一个项目使用一个**拼写错误的**、**不存在的**或者**未指定版本的**库,并且所使用的依赖库允许从**公共仓库中获取更新版本**时,就会发生依赖混淆漏洞。
|
||
|
||
* **拼写错误**:导入**`reqests`**而不是`requests`
|
||
* **不存在的**:导入一个**不再存在的**内部库`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)
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取 PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](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 来分享你的黑客技巧**。
|
||
|
||
</details>
|