应用安全公司 Aikido 披露称,GitLab 中Email work item to this project功能所使用的电子邮件地址有时会出现在 README 文件、贡献指南和公开支持页面中。这些地址包含与开发者账户关联的长期有效令牌,因此公开它们更接近于暴露凭据,而不是发布普通的错误报告接收方式。
该功能允许任何向该地址发送邮件的实体在 GitLab 项目中创建问题或任务。但 Aikido 进行的测试显示,攻击者可以将地址中的-issue后缀修改为-merge-request,从而使 GitLab 接受邮件并在项目中创建合并请求。
实际可能发生什么?
影响范围取决于与令牌关联的账户权限。潜在后果可能包括向代码中引入更改、运行 CI/CD 作业、访问私有代码库,或提取存储在 CI/CD 变量中的机密信息,还包括查看机密问题。在开源项目中,如果这些暴露的地址被用于向大量用户依赖的项目引入更改,它们可能转变为供应链风险。
Aikido 的研究人员在一个下午的时间内,就在公开文档中发现了约 12 个有效地址,并表示其中一些属于广泛使用的开源项目。攻击者无需伪造令牌所有者的电子邮件地址;GitLab 会将邮件当作由令牌所有者发出一样进行处理,测试还显示可以绕过 IP 地址限制。
利用限制与管理员责任
暴露地址并不意味着可以绕过账户权限;用户权限仍然是一个基本限制。此外,攻击者还需要知道项目路径及其标识符。这些信息在公共项目中可以获得,而针对私有项目则需要先泄露项目路径,即使标识符可以通过暴力方式猜测。
GitLab 自身的文档也警告不要分享这些地址,并将其描述为私有且为相关用户生成的地址,同时指出,知道这些地址的人可以像所有者一样创建问题或合并请求。该平台建议,一旦怀疑令牌泄露,应立即重置令牌。
这对项目意味着什么?
Aikido 于 5 月通过 HackerOne 向 GitLab 报告了这一问题,但该报告被关闭,理由是相关行为属于设计如此。在 6 月收到第二次通知后,GitLab 更新了界面,说明可以创建合并请求,并删除了有关访问令牌数据的不准确表述,同时记录了通过电子邮件接收消息会绕过 IP 限制。
最重要的实际措施落在项目管理员身上:从公开文档中删除这些地址,并重置此前已经公开的项目令牌。尚待明确的问题包括,GitLab 未来是否会依靠将发件人地址与令牌所有者的电子邮件进行匹配,作为额外的防御层;Aikido 表示,该平台目前正在研究这一机制。