Gitlab
GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可以通过web界面进行访问公开的或者私人项目。GitLab拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,它提供一个代码片段功能可以轻松实现代码复用,便于日后有需要的时候进行查找。Gitlab目前有CE(GitLab Community)社区版和EE(EnterpriseEdition)企业版。CE会比EE少一些服务,EE 需要花钱购买额外服务。
而Github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。
Gitlab和Github的相同点和不同点
相同点:
- 二者都是基于web的Git仓库,在很大程度上GitLab是仿造GitHub来做的,他们都提供了分享开源项目的平台,
- 为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
不同点:
- GitHub如果使用私有仓库,是需要付费的,GitLab可以在上面搭建私人的免费仓库
- GitLab让开发团队对他们的代码仓库拥有更多的控制,相对于GitHub,它有不少的特色:
(1)允许免费设置仓库权限
(2)允许用户选择分享一个project的部分代码
(3)允许用户设置project的获取权限,进一步提升安全性
(4)可以设置获取到团队整体的改进进度
(5)通过innersourcing让不在权限范围内的人访问不到该资源
Gitlab相关漏洞
Gitlab任意文件读取漏洞(CVE-2016-9086)
漏洞描述:GitLab版本8.9.x及以上版本在GitLab的“导入/导出项目”特性中包含一个严重的安全漏洞。在GitLab 8.9中,这个特性允许用户导出,然后以磁带存档文件(Tar)的形式重新导入他们的项目。8.13.0之前的所有GitLab版本都将此功能仅限于管理员。从8.13.0版本开始,所有用户都可以使用此功能。此功能没有正确检查用户提供的档案中的符号链接,因此经过身份验证的用户可以检索GitLab服务帐户可以访问的任何文件的内容。这包括敏感文件,例如那些包含GitLab服务用于验证用户的秘密令牌的文件。GitLab CE和EE版本8.13.0至8.13.2、8.12.0至8.12.7、8.11.0至8.11.10、8.10.0至8.10.12和8.9.0至8.9.11受到影响。
漏洞影响版本:
- 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 任意文件读取漏洞(CVE-2016-9086)
Gitlab敏感信息泄露漏洞(CVE-2017-0882)
漏洞描述:漏洞可导致拥有向其他用户发送issue或merge请求权限的攻击者获取到该用户的private token, email token, email地址和加密的OTP secret。想要利用漏洞需要有Reporter级别的权限。通过Gitlab API和这些敏感信息,就能以该用户权限进行操作,如果目标用户是管理员则可能产生更大危害。
造成漏洞的原因是对用户对象序列化过程中的一个bug,这个问题自GitLab 8.7.0版本就开始出现。
漏洞影响版本:
- 8.7.0至8.15.7
- 8.16.0至8.16.7
- 8.17.0至8.17.3
参考文章:【漏洞预警】GitLab曝高危漏洞,可致private token等敏感信息泄露
Gitlab远程代码执行漏洞(CVE-2018-14364)
漏洞描述:10.7.7之前的GitLab Community和EnterpriseEdition、10.8.6之前的10.8.x和11.0.4之前的11.x允许通过GitLab项目导入组件进行具有写访问和远程代码执行的目录遍历。
漏洞影响版本:10.7.7之前的GitLab Community和EnterpriseEdition、10.8.6之前的10.8.x和11.0.4之前的11.x、
参考文章:GitLab远程代码执行漏洞分析 -【CVE-2018-14364】
Gitlab Wiki API 远程代码执行漏洞(CVE-2018-18649)
漏洞描述:Gitlab Wiki API 是一组用于对 Gitlab 项目 Wiki 页面进行创建、编辑、列表、删除等功能的接口。该 API 在处理外部输入时未做有效过滤,导致攻击者构造特定的恶意请求,可以在目标服务器上执行任意代码命令
漏洞影响版本:Gitlab CE/EE 11.3 及之后的版本