且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

代码仓库漏洞修复及思考

更新时间:2021-12-25 12:00:39

近日,云安全中心帮我们拦截了一个风险。我们立即进行了修复,这是最近我修复的印象最深的一个Bug。该漏洞与2021年10月28日,阿里云应急响应中心监测到近日互联网上披露 CVE-2021-22205 Gitlab exiftool 远程命令执行漏洞在野利用事件。

代码仓库漏洞修复及思考

 

GitLab 一款基于Git 的完全集成的软件开发平台。 GitLab 占据了三分之二的自托管(self-hosted) Git 市场。我们公司也是其中一员。在中国互联网企业中占用率是非常高的。在信通院发布的《中国 DevOps 现状调查报告(2021)》中指出:“调查显示,有 53.45% 受访者所在企业通过 GitLab 进行代码管理。此外,还有 27.67%、24.91%和 23.75%的企业使用代码管理工具 Gerrit、Github 和 SVN。” GitLab 以 53.45% 的占比稳居第一。2021年10月,阿里云应急响应中心监测到互联网上披露 CVE-2021-22205 Gitlab exiftool 远程命令执行漏洞在野利用事件及其新型利用方式,由于 Gitlab 某些端点路径无需授权,攻击者可在无需认证的情况下完成图片上传,从而执行任意命令。

代码仓库漏洞修复及思考

自托管市场


代码仓库漏洞修复及思考

中国市场代码管理份额统计

 

收到安全提醒引起我们的重视。指定了升级预案第一时间处理该问题。源代码安全重要性对于企业来讲不言而喻,是软件开发企业健康发展的核心要务、不论是早期的产品研发,还是后期产品的运营、更新迭代。长远的视角看,源代码安全对于开发企业就是其发展生命的保障。保护源代码安全可以防止企业代码外泄有利于保护企业的合法权益及保障公司的研究成果。防止机密数据外泄是企业发展的基本要求。

 

 

影响版本

参考:https://gitlab.com/gitlab-org/cves/-/blob/master/2021/CVE-2021-22205.json

11.9 <= GitLab(CE/EE)< 13.8.8

13.9 <= GitLab(CE/EE)< 13.9.6

13.10 <= GitLab(CE/EE)< 13.10.3

代码仓库漏洞修复及思考

 

安全版本

GitLab(CE/EE) 13.8.8

GitLab(CE/EE) 13.9.6

GitLab(CE/EE) 13.10.3

上传图像文件时,GitLab Workhorse 会将扩展名为jpg|jpeg|tiff 的任何文件传递给ExifTool,以删除任何未列入白名单的标签。一个问题是 ExifTool 将忽略文件扩展名并尝试根据内容确定文件是什么,允许通过重命名上传的文件来命中任何支持的解析器,而不仅仅是 JPEG 和 TIFF。发现该问题,我们第一时间进行复现:

创建一个新片段,在描述字段中,点击“附加文件”,任何能够通过 GitLab Workhorse 上传图像的人都可以通过特制的文件实现 RCE。

代码仓库漏洞修复及思考

 

虽然云上的主机可以利用云安全组功能设置 Gitlab 仅对可信地址开放由于该漏洞评分高达CVSS 9.9 ,因我们使用的版本为12.10.1,尽快升级Gitlab至最新版本应该是***的选择我们立即对代码仓库的升级操作,由于升级不能跨越大版本号,因此只能升级到当前大版本号到最高版本,方可升级到下一个大版本号。版本路径如下12.10.1--->12.10.14-------> 13.0.14 ---> 13.1.11 ---> 13.8.8 ---> 13.12.10--->13.12.12。

下图为官方升级路径:

代码仓库漏洞修复及思考

示例代码:

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

gitlab-ctl stop nginx

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm --no-check-certificate

rpm -Uvh gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm

sudo gitlab-ctl restart

reboot

 

在我们企业中,提供代码托管、智能评审、质量检测等功能,提供删库保护等高级功能是我们急需的。云效作为云原生时代一站式DevOps平台,其中代码管理模块能解决我们企业痛点,值得推荐、也是我们企业上云的重要一环。以便我们实现安全、稳定、高效的研发生产。

在这里我也列举列举一些。更多请参考相关文档。

 

全面的代码安全保障

定时备份与代码加密精细化多级权限管控IP白名单访问控制风险问题事前监测、事中通知、事后审计源码安全/代码扫描服务

 

代码仓库漏洞修复及思考

代码仓库漏洞修复及思考

定时备份与代码加密

 

 

代码仓库漏洞修复及思考

代码仓库漏洞修复及思考

代码仓库漏洞修复及思考

源码安全/代码扫描服务

 

企业级研发协作管理

一键串联需求/任务/缺陷无缝衔接CI/CD研发效能数据洞察

代码仓库漏洞修复及思考

创建分支推荐和需求关联,便于代码评审

 

 

代码仓库漏洞修复及思考

流水线

 

 

高效的代码评审

灵活的配置能力,支持轻松定制评审规范内置代码检测服务+持续集成流水线,大幅降低人工审查成本冲突智能检测+WebIDE

代码仓库漏洞修复及思考

Pull Request请求

 

代码仓库漏洞修复及思考

代码评审

 

这次的Gitlab漏洞出现和处理。除了处理日常的安全事件以外,更多引发了我对软件质量、软件托管、企业代码管理的诸多的思考。在云原生时代,我们更需要一个高可用、无需专人运维,高安全性的代码仓库。除了提供敏感信息检测、代码规约检测、编码安全检测、三方依赖漏洞检测等诸多开箱即用的功能,更需要能进行项目目协作、CI/CD无缝衔接,一站式的解决方案。并且通过平台数据可以让我们快速洞察研发效能,提升软件开发质量。打通软件开发生命周期的各个环节,提升企业的效能,快速应对市场变化。