GitLab发布更新以修复API访问权限漏洞

GitLab发布最新适用于社群版以及企业版的13.7.2、13.6.4和13.5.6更新,这次更新版本包含高严重性的API访问令牌漏洞,以及多个中度严重等级的拒绝服务漏洞修复程序,官方强烈建议用户立即将所有GitLab安装,升级至这几个最新版本。

官方提到,从GitLab 11.5开始的所有版本,都存在一个高严重性漏洞,可让恶意攻击者通过GitLab Pages窃取用户API访问权限,这个问题是因为GitLab Pages中,对身份验证参数验证不足所产生。

这个漏洞是通过HackerOne漏洞奖励计划回应,目前该漏洞尚未取得CVE ID,不过官方已经修复,并且强烈建议所有受影响的安装版本,应该尽快升级到最新版本。GitLab Pages是让用户可以简单地从GitLab存储库,发布静态网站的功能。

内部开发团队发现GitLab 13.7以上的安装,存在一个中等严重性的CVE-2021-22166漏洞,该漏洞允许攻击者发送格式错误的HTTP请求,阻断Prometheus的服务,解决办法也是要求用户,尽快更新到最新GitLab版本。

这次更新还修复了另一个中等严重性的漏洞,该漏洞让未经过授权的用户,可以在特定条件下访问私人存储库信息,所有GitLab 12.1以上的版本,都受到该漏洞影响,官方提到,在特定项目的页面中使用不正确的标头,让攻击者可以暂时读取,在公开存储库中仅供成员访问的项目信息,该漏洞是由白帽黑客通过HackerOne漏洞奖励计划,将漏洞回应给GitLab。

另外,旧版GitLab的NuGet API以及组件上传功能,存在正规表达式拒绝服务漏洞,NuGet API漏洞影响所有GitLab 12.8以上版本,而组件上传漏洞则影响GitLab 12.8以上版本。后者漏洞的形成原因,是由于组件名称的正规表达式实例方法造成,在接受恶意输入字符串后,执行时间会以平方的速度增加。

GitLab在这次的更新版本中,变更了数据库配置,将原本设置为可信任(Trusted)的所有执行实例OAuth应用程序,变更设置为机密(Confidential),而根据最佳实践,这样的改变将要求应用程序,在OAuth流程中发送client_secret,如此才能解决过去版本存在的安全性问题。

官方提到,当用户有任何自定义执行实例的应用程序,在配置变更后出现问题,这代表客户端在OAuth身份验证过程中,没有发送client_secret,或是正在使用隐含流程(Implicit Flow)。官方给出两个解决办法,除了客户端在授权码流程中,发送client_secret之外,也能将应用程序切换回非机密状态,不过在这个情况,官方也建议用户要将应用程序设置为不受信任,如此在没有发送client_secret时,当应用程序请求访问权限,则系统会要求用户进行明确地对应用程序进行授权验证。