Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)

漏洞简述

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 的注释得知其本意是为了测试构造出的强密码,但可能被误用于正常业务逻辑当中。

Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)

通过 test_default 的引用分析可以发现,lib/gitlab/auth/o_auth/user.rb 中通过 OAuth 方式创建用户时设置了 21 位的默认密码,即“123qweQWE!@#000000000”。

Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)

漏洞验证

  1. 拉取 gitlab-ce 受影响版本的 docker 镜像
  2. 注册 Github App,callback 链接设置为:http://your-ip/users/auth/github/callback
  3. 开启 gitlab 中 OmniAuth相关配置
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['github']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [                   
    {                                                       
        "name" => "github",                                         
        "app_id" => "github_app_id",                                   
        "app_secret" => "github_app_secret",                             
        "args" => { "scope" => "user:email" }                           
    }                                                   
]
  1. 通过 OAuth github 登录(开启了 Github 和 Twitter 的 OAuth 登录如图)
Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)
  1. 用户被自动注册成功后,可以通过用户名和硬编码密码直接登录
Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)
Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)

参考链接

https://gitlab.com/gitlab-org/gitlab/-/commit/a5a3a41a50e3f47f49d8ca48c6cc2bcb667f6050

https://gitlab.com/gitlab-org/gitlab/-/commit/e2fb87ec5d4e235d6b83454980cec9c049849a1c

https://docs.gitlab.com/ee/integration/omniauth.html

https://docs.gitlab.com/ee/integration/github.html

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/vulnerability-analysis/4132.html

(0)
上一篇 2023年1月4日 16:13
下一篇 2023年1月4日 17:26

相关推荐

  • “Dirty Pipe”的故事-Linux 内核提权漏洞 (CVE-2022-0847)

    漏洞简述 3月7日,开发者 Max Kellermann 在他的博客(https://dirtypipe.cm4all.com/)中披露了一个能导致 Linux 权限提升的漏洞,编号为 CVE-2022-0847,他称之为 “The Dirty Pipe Vulnerability” (“脏管道”漏洞)。 Linux 5.10版本前的一次 commit 中,…

    2023年1月4日
  • Spark 存在 shell 命令注入(CNVD-C-2022-163612

    漏洞简述 3月24日,墨菲安全实验室情报预警监控发现 spark 提交修复 shell 命令注入的代码,当上传文件名可以被攻击者控制时,就可以构造恶意文件名造成远程任意命令执行。 Spark 是用于大规模数据处理的统一分析引擎。 用户上传文件后,tar 文件会被 hadoop 的 tar 命令解压,如果文件名被用户恶意构造后,就会导致 shell 命令注入。…

    2023年1月4日
  • CVE-2023-23752 Joomla未授权访问漏洞分析

    Joomla 在海外使用较多,是一套使用 PHP 和 MySQL 开发的开源、跨平台的内容管理系统(CMS)。Joomla 4.0.0 至 4.2.7 版本中的 ApiRouter.php#parseApiRoute 在处理用户的 Get 请求时为对请求参数有效过滤,导致攻击者可向 Joomla 服务端点发送包含 public=true 参数的请求

    2023年2月23日
  • CVE-2022-22947 SpringCloud GateWay SPEL RCE 漏洞分析

    漏洞概要 Spring Cloud Gateway 是Spring Cloud 生态中的API网关,包含限流、过滤等API治理功能。 Spring官方在2022年3月1日发布新版本修复了Spring Cloud Gateway中的一处代码注入漏洞。当actuator端点开启或暴露时,可以通过http请求修改路由,路由中包含的恶意filter参数会经过SPEL…

    2023年2月23日
  • Onedev v7.4.14 路径遍历漏洞分析(CVE-2022-38301)

    漏洞简述 OneDev 是开源的一体化轻量DevOps平台,在OneDev 7.4.14及以前版本中存在路径遍历漏洞,具有项目管理权限的攻击者可以将恶意 jar 文件上传到 lib 目录,覆盖原有jar包,攻击者可利用此漏洞在服务器中写入任意文件或远程执行恶意代码。 漏洞分析 问题代码分析 项目管理员可以在 OneDev 的`build`模块对自己的一个项目…

    2023年1月9日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741