劫持 S3 存储桶:供应链攻击者在野外利用的新攻击技术
2023-6-16 13:2:25 Author: Ots安全(查看原文) 阅读量:31 收藏

在不更改任何一行代码的情况下,攻击者通过劫持服务于其功能所需的二进制文件的 S3 存储桶并将其替换为恶意文件来毒害 NPM 程序包“bignum”。虽然这种特定的风险得到了缓解,但快速浏览一下开源生态系统就会发现,许多软件包都容易受到同样的攻击。 

恶意二进制文件窃取用户 ID、密码、本地机器环境变量和本地主机名,然后将窃取的数据泄露到被劫持的存储桶中。 

介绍 

几周前,Github 发布了一份公告,报告 NPM 包“ bignum ”中存在恶意软件。 

该公告描述了包被破坏的有趣方式。  

“bignum”的最新版本 0.13.1 发布于 3 年多前,从未受到损害。但是,几个先前的版本是。 

版本 0.12.2-0.13.0 依赖于托管在 S3 存储桶上的二进制文件。这些二进制文件会在安装时从存储桶中提取,以支持包的功能。大约 6 个月前,这个 bucket 被删除了(依赖它的版本大部分都没有用了)。 

这为接管打开了大门,这导致了我们将要深入研究的事件。 

什么是“S3 存储桶”? 

S3 存储桶是亚马逊网络服务 (AWS) 提供的一种存储资源,允许用户通过 Internet 存储和检索海量数据。它用作可扩展且安全的对象存储服务,可存储文件、文档、图像、视频和任何其他类型的数字内容。S3 存储桶可以使用唯一的 URL 进行访问,使其广泛用于各种用途,例如网站托管、数据备份和归档、内容分发和应用程序数据存储。 

开始:劫持废弃的 S3 存储桶  

发现名为“bignum”的 NPM 包利用“node-gyp”在安装期间下载二进制文件。二进制文件最初托管在 Amazon AWS S3 存储桶上,如果无法访问,将提示包在本地查找二进制文件。  

然而,一名身份不明的攻击者注意到曾经活跃的 AWS 存储桶突然被遗弃。意识到机会,攻击者抓住了废弃的水桶。因此,每当下载或重新安装 bignum 时,用户都会在不知不觉中下载由攻击者放置的恶意二进制文件。  

请务必注意,每个 AWS S3 存储桶必须具有全球唯一的名称。删除存储桶后,该名称将再次可用。如果一个包指向一个桶作为它的源,那么即使在桶被删除之后,指针也会继续存在。这种异常使攻击者可以将指针重新路由到接管的存储桶。 

攻击:具有双重功能的恶意二进制文件 

这个假货。节点二进制文件模仿了原始文件的功能。它执行了包的通常和预期的活动。尽管如此,它仍未被用户检测到,它还添加了一个恶意负载,旨在窃取用户凭据并将它们发送到同一个被劫持的存储桶。渗漏是在 GET 请求的用户代理中巧妙地执行的。  


逆转:揭开隐藏的功能  

恶意 .node 文件——本质上是一个 C/C++ 编译的二进制文件——可以在 JavaScript 应用程序中调用,桥接 JavaScript 和本机 C/C++ 库。这允许 Node.js 模块利用更高性能的低级代码,并为潜在的恶意活动打开一个新的攻击面。 

对编译后的文件进行逆向工程并非易事。使用 virus total 扫描文件没有产生任何结果,因为它没有被检测为恶意软件。但是,当查看文件中包含的字符串时,很容易看出其中有一些奇怪的行为,因此我不得不深入研究程序集。 


从无休止的向注册表、比较和数据移动添加字节列表开始,这些最初看起来毫无意义,逆向工作最终得到了回报——一个 URL 是通过单独逆向字符串部分构建的。 


进一步调查显示,二进制文件通过 getpwd 和 getuid(如字符串打印输出所示)等函数收集数据,提取环境数据。然后,它为 IPv4 通信创建了一个 TCP 套接字,并作为“GET”请求的用户代理秘密发送收集到的数据。  


涟漪效应  

由于这是第一次观察到此类攻击,我们在整个开源生态系统中进行了快速搜索。结果令人吃惊。我们发现许多使用容易受到这种利用的废弃 S3 存储桶的软件包和存储库。 

这种新型攻击媒介的影响可能会有很大差异。但是,如果攻击者在这种变化发生时设法利用它,那么它所带来的危险可能是巨大的。使用冻结版本或人工制品的组织或开发人员面临另一个风险,因为他们将继续访问同一个现已被劫持的存储桶。  

判决  

子域接管领域的这一新变化为开发人员和组织敲响了警钟。它强调了对包源和相关托管资源进行严格检查和监控的必要性。  

废弃的托管存储桶或过时的子域不仅仅是一个被遗忘的工件;如果落入坏人之手,它可能成为数据窃取和入侵的有力武器。 

预防未来劫持的主动步骤 

为了防止这种攻击发生在其他地方,我们接管了我们在搜索中发现的开源包中的所有废弃存储桶。现在,当有人试图访问这些存储桶中托管的文件时,他们将收到我们植入这些存储桶中的免责声明文件。 

概括 

攻击者不断寻找创造性的方法来毒化我们的软件供应链,这提醒我们我们的供应链流程是多么脆弱。  

我们需要了解,如果攻击者接管其存储服务,依赖软件依赖项在构建时交付编译部分可能会无意中交付恶意软件。 

我们要感谢 Google 软件包的维护者 Rod Vagg 和 Caleb Brown 对此次调查的合作和协助。 

IOC

Bignum v0.13.0: MD5: 1e7e2e4225a0543e7926f8f9244b1aab SHA-1: b2e1bffff25059eb38c58441e103e8589ab48ad3 SHA-256: 3c6793de04bfc8407392704b3a6cef650425e42ebc95455f3c680264c70043a7 Bignum v0.12.5: MD5: f671a326b56c8986de1ba2be12fae2f9 SHA-1: ab97d5c64e8f74fcb49ef4cb3a57ad093bfa14a7 SHA-256: 3ba3fd7e7a747598502c7afbe074aa0463a7def55d4d0dec6f061cd3165b5dd1

原文翻译自:https://checkmarx.com/blog/hijacking-s3-buckets-new-attack-technique-exploited-in-the-wild-by-supply-chain-attackers/

感谢您抽出

.

.

来阅读本文

点它,分享点赞在看都在这里


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247498840&idx=4&sn=ccb732cce796675e8be4fd49a11e6896&chksm=9badb513acda3c05b581388a3275664c653d2ddc1dbdba806c0e7f5556fabfbaa7797b85211c#rd
如有侵权请联系:admin#unsafe.sh