GitHub 遭受持续攻击,数百万恶意代码库泛滥成灾
GitHub 遭受持续攻击,数百万恶意代码库泛滥成灾
2024年12月9日修改
近年来,网络安全问题日益严峻,而开发者们所依赖的代码托管平台 GitHub 也未能幸免。近日,GitHub 正遭受一场持续的攻击,数百万个包含恶意软件的代码库如洪水般涌入该平台,给开发者们带来了巨大的威胁。
据了解,这些恶意代码库是合法代码库的克隆版本,它们经过精心伪装,使得普通开发者难以轻易辨别。不明身份的攻击者采用自动化流程,对合法代码库进行分叉操作,即将源代码复制以便开发者在基于原始项目的独立项目中使用。然而,这些分叉后的代码库中添加了一个被七层混淆技术包裹的恶意负载。更糟糕的是,一些不知情的人还会对这些恶意分叉进行再次分叉,进一步加剧了问题的严重性。
安全公司 Apiiro 的研究人员 Matan Giladi 和 Gil David 表示,虽然 GitHub 会尽快删除大部分恶意代码库,但由于攻击过程在很大程度上是自动化的,且规模庞大,仍有许多漏网之鱼。据估计,上传或分叉后被 GitHub 删除的代码库数量可能高达数百万个,而存活下来的恶意代码库也有数千个。他们还指出,此次攻击影响了超过 10 万个 GitHub 代码库。
GitHub 官方并未对 Apiiro 的估计提出异议,但也未对其他问题做出详细回应,只是发表了一份声明,表示其致力于为开发者提供一个安全可靠的平台,并拥有专门的团队来检测、分析和删除违反可接受使用政策的内容和账户。他们采用人工审查和利用机器学习的大规模检测手段,并不断发展和适应对抗策略,同时鼓励用户和社区成员举报滥用和垃圾信息。
事实上,针对开发者平台的供应链攻击由来已久。早在 2016 年,一名大学生就曾将自定义脚本上传到 RubyGems、PyPi 和 NPM 等平台,这些脚本的名称与广泛使用的合法软件包相似,但实际上毫无关联。2021 年,一名研究人员使用类似的技术,成功在苹果、微软、特斯拉等数十家公司的网络上执行了伪造代码。
Apiiro 所观察到的这种攻击技术被称为“代码库混淆”。与依赖项混淆攻击不同,恶意攻击者利用这种方式诱使目标下载恶意版本而非真实版本。这种攻击的流程相对简单:首先克隆现有的代码库,如 TwitterFollowBot、WhatsappBOT、discord-boost-tool、Twitch-Follow-Bot 等;然后在其中注入恶意软件加载器;再将其以相同的名称上传回 GitHub;最后通过自动化方式对每个代码库进行数千次分叉,并通过论坛、Discord 等渠道在网络上进行隐蔽推广。
开发者一旦使用了这些恶意代码库,就会解包一个被七层混淆技术隐藏的恶意负载,从而接收到恶意 Python 代码以及后续的可执行文件。这些代码主要是开源的 BlackCap-Grabber 的修改版本,会收集各种应用程序的认证 Cookie 和登录凭据,并将其发送到攻击者控制的服务器上。研究人员表示,该恶意代码库还会进行一系列其他恶意活动。
此次攻击活动始于去年 5 月,截至本文发布时仍在持续。Apiiro 表示,到目前为止,该活动已经经历了三个主要阶段:2023 年 5 月,如 Phylum 最初报道的那样,一些包含当前恶意负载早期部分的恶意软件包被上传到 PyPI,并通过在热门 GitHub 代码库(如'chatgpt-api')的分叉中植入'os.system("pip install package")'调用进行传播;2023 年 7 月至 8 月,一些恶意代码库被直接上传到 GitHub,这是在 PyPI 删除恶意软件包且安全社区加强对其关注之后发生的。Trend Micro 的 Aliakbar Zahravi 和 Peter Girnus 对其进行了详细的技术分析;2023 年 11 月至今,已经检测到超过 10 万个包含类似恶意负载的代码库,且数量还在不断增加。
这种攻击方式具有几个优势:GitHub 规模庞大,因此尽管恶意代码库的数量众多,但相对比例仍然较小,难以被察觉;不像之前的攻击涉及到软件包管理器,因此不会明确提及恶意软件包的名称,减少了一个被发现的指标;目标代码库处于一个小众且不太受欢迎的领域,使得毫无戒心的开发者更容易犯错并克隆其恶意冒名者。
然而,目前尚不清楚此次攻击中恶意代码库的下载和安装数量,如果有的话。在没有这些信息的情况下,很难评估这些大量恶意上传到 GitHub 的代码库对现实世界构成的威胁程度。但鉴于分叉代码库的数量之多以及攻击活动的持续时间之长,开发者们应提高警惕,确保从合法来源进行下载,以避免遭受潜在的安全威胁。