mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 00:20:59 +00:00
4.8 KiB
4.8 KiB
依赖混淆
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
- 您在网络安全公司工作吗? 想要看到您的公司在HackTricks中做广告? 或者想要访问PEASS的最新版本或下载HackTricks的PDF? 请查看订阅计划!
- 探索PEASS家族,我们的独家NFTs
- 获取官方PEASS和HackTricks商品
- 加入 💬 Discord群 或 电报群 或在Twitter上关注我 🐦@carlospolopm。
- 通过向hacktricks repo和hacktricks-cloud repo提交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在AWS CodeArtifact中发现了此漏洞(阅读此博客文章中的详细信息)。
AWS通过允许指定库是内部还是外部来修复了这个问题,以避免从外部存储库下载内部依赖项。
查找易受攻击的库
在关于依赖混淆的原始文章中,作者搜索了数千个包含JavaScript项目依赖项的package.json文件。
参考
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
- 您在网络安全公司工作吗? 想要看到您的公司在HackTricks中做广告? 或者想要访问PEASS的最新版本或下载HackTricks的PDF? 请查看订阅计划!
- 探索PEASS家族,我们的独家NFTs
- 获取官方PEASS和HackTricks商品
- 加入 💬 Discord群 或 电报群 或在Twitter上关注我 🐦@carlospolopm。
- 通过向hacktricks repo和hacktricks-cloud repo提交PR来分享您的黑客技巧。