GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。2016年11月3日,美国众测平台HackerOne公布了GitLab的目录遍历漏洞。漏洞的发现者为Jobert Abma,同时表示该漏洞可导致远程命令执行。
漏洞预览
从GitLab 8.9开始,GitLab允许用户导入或者导出他们的TAR文件。在8.13.0版本之前,这个功能是只有管理员才可以使用。8.13.0版本之后,这个功能开放给的用户进行使用,只要有管理员许可。由于GitLab没有检查符号链接(symlinks),因此经过身份验证的用户可以检索任何GitLab账户中的文件,甚至是secret tokens等敏感信息。因为该漏洞可以访问到secret tokens,有了secret后,cookie可以在GitLab中被marshalled和resigned,所以该漏洞又可以导致远程命令执行。
漏洞编号
CVE-2016-9086。
影响版本
8.13.0至8.13.2
8.12.0至8.12.7
8.11.0至8.11.9
8.10.0至8.10.12
8.9.0至8.9.11
修复方式
GitLab官方强烈建议所有的用户请立刻对自己的GitLab进行升级。但是注意,版本号为8.9.0至8.9.11并没有相关补丁。如果没有办法进行升级,或者无修复补丁,可以采取以下方法修补该漏洞。
1.选择Admin Area
2.点击settings
3.在import sources下面关闭GitLab export这个选项
4.点击save
验证修复
1.首先在浏览器登陆任意GitLab账号
2.点击Projects
3.点击New Project创建一个项目
4.输入任意项目名称
5.如果里面没有出现GitLab export,那么就表示漏洞已经修复