mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
5.6 KiB
5.6 KiB
依赖混淆
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在 HackTricks 中看到你的公司广告吗?或者想要获取 PEASS 的最新版本或下载 HackTricks 的 PDF吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方 PEASS & HackTricks 商品
- 加入💬 Discord 群组 或 Telegram 群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks 仓库和hacktricks-cloud 仓库提交 PR 来分享你的黑客技巧。
基本信息
简而言之,当一个项目使用一个拼写错误的、不存在的或者未指定版本的库,并且所使用的依赖库允许从公共仓库中获取更新版本时,就会发生依赖混淆漏洞。
- 拼写错误:导入**
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 中被发现(详细信息请阅读这篇博客文章)。
AWS 通过允许指定库是内部还是外部来修复了这个问题,以避免从外部仓库下载内部依赖。
查找受漏洞影响的库
在关于依赖混淆的原始文章中,作者搜索了数千个包含 JavaScript 项目依赖的 package.json 文件。
参考资料
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在 HackTricks 中看到你的公司广告吗?或者想要获取 PEASS 的最新版本或下载 HackTricks 的 PDF吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方 PEASS & HackTricks 商品
- 加入💬 Discord 群组 或 Telegram 群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks 仓库和hacktricks-cloud 仓库提交 PR 来分享你的黑客技巧。