漏洞概述
GitLab 是一个使用 Ruby on Rails 开发的开源应用程序,实现了一个 Git 仓库管理平台,可通过 Web 界面进行访问公开的或者私有的项目。在企业中得到的广泛的使用。近日研究者发现在其多个版本中存在用户多项敏感信息泄漏漏洞,攻击者可以通过这些漏洞来获取相应的用户权限,危害严重。
漏洞详情
当修改任务的分配者信息的时候,API 将返回该用户的个人信息详情,其中包括了该用户的
1 | authentication_token |
、
1 | encrypted_otp_secret |
、
1 | otp_backup_codes |
等敏感信息。
使用这些敏感信息结合 Gitlab API 可以实现使用该用户的身份和权限操作 GitLab。如果用户为管理员权限,可能会造成更大的危害。
影响版本
GitLab 用户authentication_token等敏感信息泄露漏洞分析
以下版本都受该漏洞影响:
-
8.7.0 ~ 8.15.7
-
8.16.0 ~ 8.16.7
-
8.17.0 ~ 8.17.3
解决方案
更新 GitLab
升级 GitLab 至以下相应版本:
-
8.15.8
-
8.16.8
-
8.17.4
升级完成后需要使用下述方式来重置所有用户的
1 | private token |
和
1 | email token |
。
对于以
1 | Omnibus |
方式安装的用户,新建文件
1 | /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/reset_token.rake |
;对于以源码方式安装的用户,新建文件
1 | <gitlab_installation_dir>/lib/tasks/reset_token.rake |
,并写入如下内容:(如有复制代码需求,请点击“官方升级公告”查看)
1 | Omnibus |
方式安装的用户执行以下命令:
源码方式安装的用户执行以下命令:
临时补丁
如果因为业务原因不能及时更新 GitLab,可使用下述方式进行临时修复:
将如下内容保存至
1 | gitlab.patch |
1 | Omnibus |
方式安装的用户执行以下命令:
源码方式安装的用户执行以下命令:
参考
来自:长亭科技订阅号