漏洞概述
2021 年 4 月 14 日 GitLab 官方发布安全更新,披露了 CVE-2021-22205 GitLab exiftool 远程命令执行漏洞,攻击者通过上传恶意图片可触发远程命令执行,控制服务器。
由于 GitLab 某些端点路径无需授权,攻击者可在无需认证的情况下完成图片上传,从而执行任意命令。
- 漏洞 CVE-2021-22205 提交者 vakzz:RCE when removing metadata with ExifTool
- GitLab 官方更新补丁:GitLab Critical Security Release: 13.10.3, 13.9.6, and 13.8.8
- GitLab 问题跟踪 issue:GitLab issue: RCE when removing metadata with ExifTool
- 漏洞示例:GitLab CE CVE-2021-22205 in the wild
- DjvU 制作:CVE-2021-22205 原理
漏洞 CVE-2021-22205 影响范围
CVE-2021-22205 影响范围从 GitLab 11.9 开始,影响范围为如下版本:
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 针对该漏洞已更新相关补丁,GitLab(CE/EE) 的 13.8.8、13.9.6、13.10.3 以及 13.11 以上版本或极狐 14.x.x 都修复了该问题。(参考 GitLab Critical Security Release: 13.10.3, 13.9.6, and 13.8.8)。
漏洞出处
该漏洞最初由 HackerOne 的 vakzz 反馈问题,该漏洞起始于 GitLab(CE/EE)11.9,GitLab 未验证图片文件 (jpeg/jpg/tiff) 的元数据并直接进行文件解析而造成远程命令被执行 (参考:RCE when removing metadata with ExifTool)。未经授权的用户可以通过该方法对任意用户进行提权操作 (参考:GitLab CE CVE-2021-22205 in the wild)。
漏洞问题查找
极狐GitLab技术支持团队针对漏洞 CVE-2021-22205 进行了复现并查找到了问题到根因。GitLab Inc.的技术团队也建立相关 issue(Gitlab issue: RCE when removing metadata with ExifTool) 跟踪该问题的进展情况。
该问题是在 GitLab-CE/EE 11.9 引入,GitLab 使用开源软件 ExifTool 对图片文件进行处理时未筛查图片文件中是否包含不安全的 shell 脚本而造成。
我们根据实际的用户使用场景模拟了黑客攻击系统漏洞的方式,并测试利用该系统漏洞可以进行哪些攻击手段:
- 利用该漏洞执行远程命令,访问操作系统并修改系统文件;
- 将 GitLab 的任意用户提升为管理员,并借此访问所有 GitLab 管理的资料 (用户信息、代码仓库以及 Uploads);
- 以管理员用户身份,修改或删除 GitLab 的用户数据;
- 攻击者可以伪装成任意用户执行 GitLab API 请求。
由于该漏洞的严重级别很高,建议处于漏洞 CVE-2021-22205 影响范围的客户参考下文中的漏洞问题解决及时进行系统升级。
同时,我们验证了在进行系统升级或者安装系统补丁之后,上述漏洞已被修复。
如果需要了解漏洞 CVE-2021-22205 的详细信息可以参考 GitLab issue: RCE when removing metadata with ExifTool。
漏洞问题解决
目前有 2 种方式解决 CVE-2021-22205 漏洞问题:
- GitLab 系统升级 (推荐) 适用场景:
- 使用 GitLab Omnibus 安装包部署的 GitLab 单实例
- 使用 GitLab Omnibus 安装包部署,标准 GitLab 参考架构的高可用集群
- 使用源码安装的 GitLab:Install-from-Source GitLab Inc.在发现该漏洞之后针对该问题进行了补丁修复,新发布的 GitLab 13.8.8、13.9.6、13.10.3、13.11 以上版本以及所有的极狐GitLab版本中解决了该问题。我们推荐您将您的系统升级至极狐GitLab最新发布的版本 (或最近的 3 个次版本,GitLab 版本号的命名规则是<主版本号>.<次版本号>.<修正版本号>)。 通过将原有的 GitLab-CE/EE 升级至 13.8.8、13.9.6、13.10.3 或 13.11 以上版本,或者极狐GitLab最新版 14.x.x,解决 CVE-2021-22205 漏洞问题。修正版本号>次版本号>主版本号>
- 操作系统升级 ExifTool(支持 Centos,Debian,Ubuntu)
适用场景:
- 因其他业务原因或者外部因素无法进行 GitLab 升级 由于 CVE-2021-22205 是由开源软件 ExifTool 引入的问题,通过升级 ExifTool 也可以解决该漏洞问题,在操作系统层面安装补丁;
- Ubuntu 用户可通过升级 libimage-exiftool-perl 解决该问题
- Debian9 用户安装 libimage-exiftool-perl 10.40-1+deb9u1 all:
sudo apt-get update -y sudo apt-get install -y libimage-exiftool-perl
- 其他 Debian 版本可安装或升级 libimage-exiftool-perl 版本: CVE-2021-22204
- Centos7 用户安装 perl-Image-ExifTool-12.30-1.el7.noarch:
sudo yum update -y sudo yum install -y perl-Image-ExifTool
推荐升级到极狐GitLab最新版本
极狐GitLab技术支持团队推荐您将 GitLab 平台升级至极狐GitLab的最新版本 (或者最近的 3 个次版本,GitLab 版本号的命名规则是<主版本号>.<次版本号>.<修正版本号>)。极狐GitLab将在每月 28 日发布一个新的小版本 (修正版本),随着新版本的升级,漏洞得到了修复并能够享受更多新功能,为本地用户提供更好的用户体验。关于为什么推荐升级到极狐GitLab,可查看 [为什么选择极狐GitLab](https://about.gitlab.cn/is-it-any-good/)。修正版本号>次版本号>主版本号>
极狐GitLab的新版本有很多新的 Feature 帮助您实现更加安全高效的 DevOps 实践。
让我们一起看一下极狐GitLab14 在安全功能方面所做的大量优化:
- 动态安全扫描 DAST 预设置
- 项目级动态安全扫描 DAST 和密钥检测扫描的执行策略
- 授权群组访问极狐GitLabKubernetes Agent
- 针对受保护环境的群组级权限管理
- 下一代静态安全扫描 SAST 以减少 Ruby 语言的误报率
- 追踪依赖性扫描和模糊测试的使用情况
- GoSec、Semgrep 和 Brakeman 分析器的漏洞追踪功能改进
- 隐藏被禁止的用户创建的所有议题
- 快速访问合规报告的内容
- 容器安全扫描集成 Trivy
- Kubernetes 集群的 CI/CD tunnel
- 选择项目 access token 的角色
- DAST 界面配置工具
从上面可以看出极狐GitLab其实已经是一个 DevSecOps 平台了,其提供的容器镜像扫描、静态应用安全测试 (SAST)、动态应用安全扫描 (DAST)、密钥检测、License 合规、依赖项扫描以及模糊测试等安全功能,能够完整的覆盖软件开发生命周期的各个阶段,助力企业实现软件供应链安全。
极狐GitLab技术支持
极狐GitLab有非常专业的技术支持团队 (零投诉、高水平),能为付费客户 (专业版/旗舰版) 提供全面的技术支持。极狐GitLab技术团队提供的服务有:
- 将协助您进行系统升级 (Omnibus、Docker、Helm 部署方式均可)
- 及时响应客户反馈,快速处理各种问题,我们的 SLA 可参考:极狐GitLab技术支持 SLA
- 一体化 DevOps 平台构建与方案优化
- 帮助您更加安全高效地使用极狐GitLab
- 协助您集成第三方软件平台
- 提供优化极狐GitLab的技术咨询,并得到本地化的极狐GitLab专业技术支持
此外,极狐GitLab社区版用户也可以在极狐GitLab中文技术社区获取到第一手的资料以及帮助支持。并且在极狐GitLab的微信群中交流任何与极狐GitLab相关的话题,我们的专业人员都会在群里及时回复大家的问题。(极狐GitLab中文技术社区)。