Skip to main content

攻击供应链

Git在企业环境中,我们常常遇见存储库管理软件,例如 Artifactory, Nexus Sonatype, Gitlab 等。这些软件存储了企业内在用的软件包、项目文件、二进制文件等。

image.png

image.png

image.png

这些存储库管理器充当组织的可信来源,能够控制在软件开发或基础架构配置中使用的包和应用程序的版本。这可以防止开发人员直接从网络上获取不受信任或不稳定的软件。对于这些应用,具有上传、部署、写入等权限的用户可以将项目或文件放置在应用的存储库中,终端用户或计划任务可以将这些应用实例配置为包存储库,以便在服务器上的正常安装过程中使用,或者直接下载可执行文件。考虑到这些应用是企业用户获取其他软件的可信来源,因此如果攻击者通过写入恶意文件污染了供应链,大量用户会被攻陷,危害极大。正因为这样的应用被认为是可信的来源。因此用户不太担心存在恶意软件的可能性。

考慮到不同企業中對於存儲庫以及項目管理軟件有著不同偏好,而針對這些軟件的攻擊方法也有所不同,因此本篇更加注重通用攻擊方法,並假設這些軟件不存在 CVE 漏洞。

 

匿名访问

例如 Artifactory 和 Sonatype,是允许匿名访问的,即攻击者不需要凭证也可以访问存储库中的文件,甚至具有一定权限,例如更改文件或项目的属性。并且,如果存在更严重的配置失误,匿名状态下甚至可以部署文件,这种情况无疑是快速的胜利。如果在匿名状态下没有任何写权限,我们应该枚举匿名访问的所有权限。除此之外,因为存储库管理软件同样可能存储了内部应用的源代码以及其他敏感文件,我们可以从中提取敏感信息,例如 API Key,明文帐号密码等。

供应链污染

不管是具有写权限的匿名访问,还是获得了有效凭证,如果我们具备写权限,便可以上传、替换、更改文件。从攻击者的角度,将经常被下载或自动化安装的文件替换为植入了木马的程序,可以从而攻陷众多主机与用户。

JFrogimage.png

如上图所示,该二进制文件已经被下载了 73 次了,说明无论是终端用户下载,还是服务器上的计划任务自动拉取文件并执行,只要该文件在供应链中被污染了,后果严重。

Nexus Sonatype