BlackHat 2022 部分论文研读

系列 - BlackHat
注意
本文最后更新于 2022-10-08,文中内容可能已过时。

Controlling the Source: Abusing Source Code Management Systems

摘要:源代码管理(SCM)系统在组织中起着至关重要的作用,与其他关键企业系统(如Active Directory)相比,它在防御方面是事后才想到的。SCM系统在大多数组织中用于管理源代码,并作为DevOps流水线的一部分与企业内的其他系统集成,例如像Jenkins这样的CI/CD系统。这些SCM系统为攻击者提供了软件供应链攻击的机会,并可促进整个组织的横向移动和权限提升。

本白皮书将回顾SCM系统的背景,并详细介绍滥用一些最流行的SCM系统(如GitHub Enterprise、GitLab Enterprise和Bitbucket)执行各种攻击场景的方法。这些攻击场景包括侦察、操纵用户角色、接管存储库、转移到其他DevOps系统、用户模拟和维护持久访问。X-Force Red的源代码管理攻击工具包(SCMKit)也将用于执行和促进这些攻击。此外,还将概述保护这些SCM系统的防御指南。

**源代码控制专门用于跟踪源代码中的更改,而版本控制还包括跟踪二进制文件和其他文件类型的更改。**例如,版本控制跟踪对已编译可执行文件的更改,而源代码控制跟踪对编译到该可执行文件中的底层C#或C++源文件的更改。Git是一个流行的源代码控制工具,Subversion是一个受欢迎的版本控制工具。这里主要研究源代码控制在整个开发流程中可能受到的攻击。

SCM方便团队内成员处理同一源代码文件,企业中使用的一些比较流行的SCM系统是GitHub Enterprise、GitLab Enterprise 和Bitbucket。这些SCM系统支持与其他系统的集成,作为DevOps流程的一部分。当源代码工程准备编译和构建时,它将被推送到持续集成(CI)服务器。之后,将对其进行测试、扫描和部署,以便在生产中使用。

一种常见的软件供应链攻击如下,在此攻击中,攻击者在某个阶段将自己注入开发过程,以将恶意代码部署到生产环境中。此处的研究重点是“B”和“C”的突出领域,因为它涉及SCM系统的折衷。当然,这并不代表其它的阶段不存在风险,攻击者可以利用SCM系统危害CI/CD平台。

/images/ThesisStudy_BlackHat_2022/image-20221007224153350.png

SCM中的横向移动,以Bitbucket SCM系统到Jenkins构建系统执行横向移动的场景为例。在使用Jenkins时,可以使用Jenkinsfile用作构建配置文件。该文件可以签入SCM系统,Jenkin使用它来执行各种操作,作为构建过程的一部分。获得SCM系统访问权限的攻击者首先需要发现包含任何名为“Jenkinsfile”的文件的任何存储库。在这种情况下,攻击者需要对发现的存储库进行写访问才能修改Jenkins文件。在Bitbucket中,这可以通过web界面或REST API执行。