极狐(GitLab)深知漏洞管理对系统的安全性和稳定性至关重要。针对今年 4 月出现的 CVE-2021-22205 GitLab CE/EE/JH 版本 exiftool 远程命令执行漏洞,本文将为您详细介绍漏洞的更新升级方案。极狐(GitLab)将时刻保持安全警惕,并始终致力于为您提供安全、稳定、高效的一体化 DevOps 平台。
如您遇有任何问题,可以随时通过https://support.gitlab.cn/进行提交,极狐GitLab 技术团队将在第一时间与您回复。
漏洞概述
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
-
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)。
注:截止到本文撰写,极狐GitLab 的最新发布版本为极狐GitLab 14.4.1
漏洞出处
该漏洞最初由 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 系统升级
-
操作系统升级 ExifTool(支持 Centos,Debian,Ubuntu)
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
适用场景:
- 因其他业务原因或者外部因素无法进行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,可查看 (/is-it-any-good/)。修正版本号>次版本号>主版本号>
极狐GitLab 的新版本有很多新的 Feature 帮助您实现更加安全高效的 DevOps 实践。
让我们一起看一下极狐GitLab 14 在安全功能方面所做的大量优化:
-
动态安全扫描 DAST 预设置
-
项目级动态安全扫描 DAST 和密钥检测扫描的执行策略
-
授权群组访问极狐GitLab Kubernetes 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中文技术社区:/community/。