gitlab漏洞系列-绕过CI/CD给定配额限制

admin 2022年5月15日01:26:09评论87 views字数 1057阅读3分31秒阅读模式

gitlab漏洞系列-绕过CI/CD给定配额限制

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

背景

白帽小哥marandil于2021年提交了这个漏洞:

托管在gitlab.com上的项目,无论是公共的还是私有的,都可以使用私有运行程序实例,或者使用公共的、共享的运行程序来运行CI作业。 私人项目在CI/CD上面的共享运行器的给定配额被限制, 用户业务群组的配额可读路径为Preferences/Usage Quotas (https://gitlab.com/-/profile/usage_quotas), 组可读路径为Group / Settings /Usage Quotas(https://gitlab.com/groups/[Group -name]/-/usage_quota)。

可以通过快速启用并随后禁用group/project的共享运行器来绕过这个限制。看起来,只有当管道作业完成运行并且启用了共享运行程序时,才会计算使用配额。

这也可能会影响使用共享运行器的自托管GitLab实例,尽管其影响要比公共实例小得多。

复现步骤

1.以新用户登录GitLab(也适用于组和老用户)

2.创建一个空项目,点击设置CI/CD,并输入CI/CD作业,例如:

test:  
image: ubuntu
script:
- sleep 5m

3.提交更改。该作业应该开始自动运行,几分钟后,在https://gitlab.com/-/profile/usage_quotas下应该可以看到;

4.打开另一个选项卡,进入Project/Settings/ CI/CD,展开运行器并关闭此项目的启用共享运行器。

5.回到第一个选项卡,重新启动作业,例如https://gitlab.com/[user or group]/[project]/-/jobs/[job id],该作业现在应该暂停并发出警告:

This job is stuck because you don't have any active runners that can run this job.

6.回到第二个选项卡,将这个项目的启用共享运行器切换为on,等待几秒钟(~10),然后切换回OFF。

7.回到第二个选项卡,作业应该再次运行。完成后,请访问https://gitlab.com/-/profile/usage_quotas


原文始发于微信公众号(迪哥讲事):gitlab漏洞系列-绕过CI/CD给定配额限制

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月15日01:26:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   gitlab漏洞系列-绕过CI/CD给定配额限制https://cn-sec.com/archives/1004814.html

发表评论

匿名网友 填写信息