GitLab 向报告自家平台的严重远程代码执行漏洞的安全研究人员奖励了 2 万美元。该漏洞由 William "vakzz" Bowling 发现,Bowling 既是一名程序员同时也是 Bug 赏金猎人,他于3月23日通过 HackerOne Bug 赏金平台私密披露了该漏洞。
Bowling 表示,GitLab 的 UploadsRewriter 函数用于拷贝文件,而这正是此次严重安全问题的源头。当 issue 被用于跨项目复制时,UploadsRewriter 函数会检查文件名和补丁。然而在这过程中由于没有验证检查,导致出现路径遍历问题,这可能会被利用于复制任何文件。
根据 Bug 赏金猎人的说法,如果漏洞被攻击者利用,则可能会被用于"读取服务器上的任意文件,包括 token、私有数据和配置"。GitLab 实例和 GitLab.com 域均受到该漏洞的影响,此漏洞被 HackerOne 判定为严重等级程度。
Bowling 补充到,通过使用任意文件读取漏洞从 GitLab 的 secret_key_base 服务中抓取信息,可以将该漏洞变成远程代码执行(RCE)攻击。举例来说,如果攻击者改变了自己实例的 secret_key_base 以匹配项目,那么 cookie 服务也可以被操纵以用于触发 RCE 攻击。
Bowling 将漏洞发送给了 GitLab 安全团队,工程师们重现了此问题,并指出攻击者至少需要成为项目成员才能利用该漏洞,但根据 GitLab 高级工程师 Heinrich Lee Yu 的说法,攻击者也可以"创建自己的项目或组别来达到同样的目的"。
目前,该漏洞已经在 GitLab 12.9.1 版本中得到了解决,安全研究人员 Bowling 也于3月27日获得了全额赏金。