漏洞简述
3月30日,GitLab 官方修复了CE/EE版本产品中硬编码密码导致的接管用户账户的安全问题。
由于使用 OmniAuth 注册的代码逻辑中存在硬编码密码,导致账号可被攻击者直接登录。该漏洞受影响版本为 14.7.0 ~ 14.7.6,14.8.0 ~ 14.8.4,14.9.0 ~ 14.9.1,均为较高版本,且该漏洞依赖于开启 OmniAuth 注册登录(用于CAS等三方登录场景),整体对企业实际影响较小。
漏洞时间线
- 3月22日,GitLab 表示到当天还未有用户帐户遭到破坏。
- 3月30日,GitLab 修复了硬编码密码的问题。
- 3月31日,GitLab 推出 14.9.2,14.8.5,14.7.7 三个安全版本。
漏洞分析
针对此次安全问题的修复 commit 将多处对Password.test_default 的调用修改为固定字符串,还删除了定义 test_default 方法的 lib/gitlab/password.rb 文件。
可见漏洞根源是 Password.test_default,这是在两个月前为了增加密码强度而引入的。从 password.rb 的注释得知其本意是为了测试构造出的强密码,但可能被误用于正常业务逻辑当中。
通过 test_default 的引用分析可以发现,lib/gitlab/auth/o_auth/user.rb 中通过 OAuth 方式创建用户时设置了 21 位的默认密码,即“123qweQWE!@#000000000”。

最低0.47元/天 解锁文章
1133

被折叠的 条评论
为什么被折叠?



