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日获得了全额赏金。
试用申请