2024年1月,GitLab发布安全更新修复了一个任意用户密码重置漏洞。该漏洞利用简单,无需前置条件,无需用户交互即可利用,建议受影响的用户立即修复该漏洞。GitLab是一个开源的DevOps平台,支持从项目规划到源代码管理,再到CI/CD、监控和安全性的全流程自动化。
【漏洞影响】
1、未授权的账户访问:由于密码重置邮件可能被发送到未验证的电子邮箱地址,未经授权的用户可能会获取GitLab账户的访问权限。
2、数据泄露风险:如果攻击者成功重置密码并访问账户,他们可能访问或泄露敏感数据,如源代码、项目信息和个人数据。
【漏洞成因】
在GitLab发布的16.1.0(2023年5月1日)版本中引入新功能,允许用户通过自行设置的电子邮件地址重置密码。该漏洞是由电子邮件验证过程中的错误造成的,用户密码重置电子邮件可能会发送到未经验证的电子邮件地址。
检查gitlab-rails/production_json.log日志文件
请在gitlab-rails/production_json.log日志文件中查看是否有发往/users/password路径的HTTP请求记录。特别注意那些请求参数params.value.email中含有多个电子邮件地址的JSON数组的情况,这可能是存在历史攻击行为的迹象。
检查gitlab-rails/audit_json.log日志文件
另外,请检查gitlab-rails/audit_json.log日志文件中的相关条目。重点关注那些meta.caller.id字段为PasswordsController#create且target_details、字段包含多个电子邮件地址的JSON数组的记录。
【影响版本】
· 16.1.0 ≤ 版本 < 16.1.6
· 16.2.0 ≤ 版本 < 16.2.9
· 16.3.0 ≤ 版本 < 16.3.7
· 16.4.0 ≤ 版本 < 16.4.5
· 16.5.0 ≤ 版本 < 16.5.6
· 16.6.0 ≤ 版本 < 16.6.4
· 16.7.0 ≤ 版本 < 16.7.2
这些受影响的版本中,使用SSO(单点登录)方式的用户,比如SAML用户会受到影响,但是使用LDAP的用户则不会受到影响,因为他们没有忘记密码/重置密码的选项。此外,那些启用了双因素认证的用户虽然可能会受到密码重置的风险,但不会遭受账户被接管的风险,因为登录时仍需要他们的第二认证因素。
【解决建议】
1、为所有GitLab帐户启用双因素身份验证(2FA),尤其是具有提升权限的用户(例如管理员帐户)。
2、如非必要,不要将受影响系统放置在公网上。或通过网络ACL策略限制访问来源,例如只允许来自特定IP地址或地址段的访问请求。
3、官方已发布新版本修复漏洞,建议尽快访问官网(https://about.gitlab.com/releases/2024/01/11/critical-security-release-gitlab-16-7-2-released/)获取版本升级安装包。