白泽带你读论文|Continuous Intrusion
2023-8-11 16:25:33 Author: mp.weixin.qq.com(查看原文) 阅读量:3 收藏

如需转载请注明出处,侵权必究。

论文题目:Continuous Intrusion: Characterizing the Security of Continuous Integration Services

发表会议:S&P 2023

本文第一作者是来自奇安信技术研究院的Yacong Gu。奇安信技术研究院致力于网络空间安全相关技术的研究,其研究方向包括供应链安全、系统安全、物联网安全等

概述

持续集成(CI)已经成为一种广泛采用的软件开发实践,它可以自动化实现代码的集成、构建和测试,大大提升了开发效率。但由于CI任务会执行可信度不高的用户代码,也给它带来了新的攻击面,如果CI服务配置不当,攻击者就可以向受害软件注入恶意代码。

这篇文章系统地研究了持续集成工作流程中涉及的多个利益方(代码托管平台、CI平台、第三方服务)之间的潜在安全威胁,通过提取基本安全模型与原则,发现了资源隔离不当以及对多种令牌使用不当所导致的一系列安全风险。为全面评估这些安全威胁,作者设计开发了CInspector工具来检测7个流行CI平台的潜在漏洞,大规模评估了漏洞对开源社区的潜在影响,并为CI平台的安全实践提供指导。

背景

主要利益方

代码托管平台(CHP)用于存储源代码,一般采用基于角色访问控制,包括所有者、协作者和报告者三种角色。所有者拥有仓库的所有权限,协作者拥有读写权限,报告者只有读权限。

CI平台(CP)负责执行仓库的CI任务,它可以内置在CHP中,也可以独立于CHP。CP主要包括三个组件:控制器(controller)运行器(runner)和执行器(executor)。Controller是CP的核心,负责处理CHP的授权,解析CI任务配置,接收执行触发事件,调度和分发CI任务。Runner是一个代理,须注册到controller以接收指令。Executor是CI任务的实际执行环境。

第三方服务(TPS)是指CI任务执行可能需要的云服务等。

CI工作流程

上图展示了典型CI系统的工作流程,共包括以下8个主要步骤:

  1. 仓库所有者向controller授权CHP访问权限,controller获得CHP令牌,用于访问源代码和接收事件;

  2. Runner向controller注册,获得注册令牌;

  3. Controller接收到仓库的触发事件,根据配置向注册的runner分发任务;

  4. Controller使用任务令牌与runner进行授权通信;

  5. Runner启动一个executor来执行CI任务;

  6. Executor使用CHP提供的代码部署令牌下载源代码,并执行任务的各个阶段;

  7. 在任务执行过程中,Executor可利用artifact令牌与第三方服务交互;

  8. 任务结束后,executor利用任务令牌将结果返回给controller。

实验评估

本文研究了持续集成环境下的三类攻击者:公共仓库PR发起者、拥有部分权限的仓库协作者、仓库所有者,这些攻击者试图通过执行CI进程窃取隔离性差或高权限的令牌,以达到访问未获授权的资源或隐蔽注入恶意代码的目标。他们遵循CI执行流程,在假设CI平台和通信均安全的前提下,利用CI组件之间的弱隔离以及对多种令牌的不当配置等风险因素发起攻击。

通过阅读相关文档以及分析开源组件的源代码,作者提出了以下几种安全威胁:

  1. 弱资源隔离:由于runner和executor通常在同一台主机上运行,如果两者之间没有适当的隔离, executor可能会访问未获授权的runner资源。

  2. 不当的CHP令牌:CHP令牌是CP访问存储库中的源代码并接收触发事件的凭据,不当的使用会导致CHP数据泄露给攻击者。

  3. 不当的令牌权限:如果令牌的可访问性和权限配置不当,可能会导致权限升级。

  4. 不当的令牌有效期:任务令牌、artifact令牌等应设置为一次性令牌,在任务结束后立即失效,如果令牌的有效期远超必要的时间,则会大大增加令牌泄露后的安全风险。

Cinspector 工作流程

为研究CI服务中的潜在漏洞,本文设计了Cinspector工具,来分析流行的CP及其与CHP、TPS的交互。其工作流程如下图所示:

  1. 在执行CI任务前,Cinspector要完成的准备工作包括创建测试仓库并模拟不同权限的用户,注册自托管runner,开发网络流量监控和系统数据收集工具,以及设计自定义的CI任务。

  2. 在执行CI任务期间,Cinspector首先记录runner中生成的网络流量,并广泛地收集系统数据,包括进程和套接字端口信息等。

  3. 在在线分析阶段,CInspector实时解析网络流量并使用预先设计的测试套件对令牌进行自动测试,确定其权限和有效期,进而提取可疑的令牌。

  4. 在离线分析阶段,CInspector进一步执行令牌可访问性分析、令牌谱系分析、令牌标记,确定潜在的对手是否可以获得令牌。

  5. 最后,Cinspector采用基于规则的风险分析方法,主要检测令牌泄露、令牌权限过度和有效期不当三类安全威胁,实现CI平台安全风险的自动化识别。

风险识别

本文对主流的三个CHP(GitHub、GitLab和Bitbucket)和七个CP(三个CHP的内置CP和四个独立的CP)进行了分析,发现了多个平台存在令牌泄露和令牌误用的安全风险。

对于令牌泄露风险,文章总结了几种可能的泄露方式:

  1. 命令行泄露:比如Bitbucket Pipelines的自托管runner会直接将注册令牌作为命令行参数传递,而命令信息可在历史文件中查看,造成令牌泄露。

  2. 环境变量泄露:比如GitLab CI通过环境变量将任务令牌传递给executor,可以通过读取环境变量文件窃取令牌。

  3. 明文文件泄露:比如GitHub Actions在注册自托管runner后,会将注册令牌保存到多个文件中,可以读取文件获取令牌。

  4. 内存泄露:比如CircleCI和GitHub Actions的executor具有root权限,可以通过内存读取的方式获取令牌信息。

通过CInspector工具的检测,本文发现所有七个主流的CP都面临令牌泄露的风险(详见下图)。特别是关键的任务令牌,几乎所有平台都存在不同途径的泄露,攻击者可能窃取令牌并冒充正常任务。

此外,本文发现多种令牌存在误用导致的安全缺陷。例如,代码部署令牌和artifact令牌存在权限过高的问题,可能导致攻击者通过一个仓库的任务令牌获取其他仓库的访问权限。更严重的是,大多数平台的关键令牌有效期配置过长,一旦泄露,攻击者可长期实施恶意行为。

实验评估

基于上述风险分析的结果,本文提出了四种新的攻击向量,使攻击者能够访问未获授权的资源,操纵执行结果,并绕过CHP上的安全机制。

  1. 任务劫持攻击(A1): 攻击者可以利用泄露的runner注册令牌,注册一个恶意的runner。使得controller将原始runner的后续任务分发给这个恶意runner,实现任务劫持,进一步获取敏感信息。

  2. 仓库提权攻击(A2): 攻击者可以利用 CI 任务中泄露的权限过高的部署令牌,访问未获授权的其他仓库,实现权限提升。

  3. 任务结果劫持攻击(A3): 攻击者利用泄露的任务令牌,可以伪造任务执行结果,欺骗仓库所有者合并存在漏洞的代码。

  4. artifact劫持攻击(A4): 攻击者利用泄露的artifact令牌,可以在任务完成后继续修改上传的artifact,插入恶意代码。

另外,为评估上述四种攻击向量对开源社区的实际威胁,本文在GitHub、GitLab和Bitbucket三个主流CHP上进行了大规模的数据分析。从实验结果来看,文章提出的这些攻击对上万个流行的开源项目造成了严重威胁,具体体现在以下几点主要发现。

  1. 使用GitHub Actions, Bitbucket Pipelines, CircleCI, TeamCity, Jenkins这几种CI平台,并且使用自托管runner的仓库,容易受到任务劫持攻击。

  2. 使用GitLab CI, TeamCity, Jenkins这几种CI平台,并且有协作者的仓库,容易受到仓库提权攻击。

  3. GitHub上只有少数仓库要求通过CI检查后再合并代码,而没有启用该规则的仓库容易受到任务结果劫持攻击。

  4. 使用TravisCI, CircleCI, Jenkins这几种CI平台,并且上传artifact的仓库容易受到artifact劫持攻击。

防御措施

针对广泛存在的安全威胁,本文提出了以下几点防御措施:

  1. 适当隔离runner和executor。由于executor可以执行不受信来源的代码,将executor与runner隔离,可以防止executor干扰runner或越权访问runner拥有的资源。

  2. 限制令牌的权限和有效期。当CP从CHP获得令牌时,应该遵循最小特权原则,只申请所需的权限。此外,CP应根据更新的安全功能持续优化CHP的授权。同时,CP也应采用TPS的安全功能,防止artifact被篡改。最后,必须严格控制所有令牌的有效期,一次性令牌必须在任务结束后立即失效。

  3. 仔细检查重用的资源。应该谨慎地设计CI工作流程,并采用CP来平衡资源使用和系统安全。此外,还应该彻底检查重用的资源,以排除令牌泄漏的潜在风险。

总结

本文系统地分析了CI工作流程中潜在的安全威胁,利用开发的分析工具分析了七种流行CP的潜在漏洞,并对三种主流的CHP进行了大规模的测量评估。文章揭露了广泛存在的安全威胁与严重的攻击后果,并提出了相应的缓解措施,为CI工作流程的安全实践做出贡献。

供稿:刘智晨

审稿:邬梦莹、洪赓

排版:边顾

戳“阅读原文”即可查看论文原文哦~

复旦白泽战队

一个有情怀的安全团队

还没有关注复旦白泽战队?

公众号、知乎、微博搜索:复旦白泽战队也能找到我们哦


文章来源: https://mp.weixin.qq.com/s?__biz=MzU4NzUxOTI0OQ==&mid=2247486818&idx=1&sn=609f68fe9ace755bdfb1a9c9db6438b1&chksm=fdeb891cca9c000ae9a8292832bc7721ee02f386c7001e6e9337b2049c7734af5822bbb6adcf&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh