GitLab 发布了安全更新,以解决影响 GitLab 社区版 (CE) 和企业版 (EE) 的自主管理安装的严重 SAML 身份验证绕过漏洞。
安全断言标记语言 (SAML) 是一种单点登录 (SSO) 身份验证协议,允许用户使用相同的凭据登录不同的服务。
该漏洞编号为 CVE-2024-45409,源自 OmniAuth-SAML 和 Ruby-SAML 库中的一个问题,GitLab 使用这两个库来处理基于 SAML 的身份验证。
当身份提供者 (IdP) 向 GitLab 发送的 SAML 响应包含错误配置或被操纵时,就会出现此漏洞。
具体来说,该缺陷涉及对 SAML 断言中关键元素的验证不足,例如用于在不同系统间唯一标识用户的 extern_uid(外部用户 ID)。
攻击者可以制作恶意 SAML 响应,诱骗 GitLab 将其识别为经过身份验证的用户,绕过 SAML 身份验证并获得对 GitLab 实例的访问权限。
CVE-2024-45409 漏洞影响 GitLab 17.3.3、17.2.7、17.1.8、17.0.8、16.11.10 以及这些分支的所有先前版本。
该漏洞已在 GitLab 版本 17.3.3、17.2.7、17.1.8、17.0.8 和 16.11.10 中得到解决,其中 OmniAuth SAML 已升级到版本 2.2.1,Ruby-SAML 已升级到版本 1.17.0。
GitLab 在公告中警告称:“强烈建议所有运行受上述问题影响的安装尽快升级到最新版本。”
GitLab.com 上的 GitLab Dedicated 实例用户无需采取任何行动,因为该问题仅影响自管理安装。
对于那些无法立即升级到安全版本的用户,GitLab 建议为所有帐户启用双因素身份验证 (2FA),并将 SAML 2FA 绕过选项设置为“不允许”。
恶意利用迹象
GitLab 在公告中提供了尝试或成功利用的迹象,这表明恶意攻击者可能已经在利用该漏洞进行攻击。
尝试或成功利用漏洞的迹象如下:
- 与 RubySaml::ValidationError 相关的错误(尝试失败)。
- 身份验证日志中出现新的或不寻常的 extern_uid 值(成功尝试)。
- SAML 响应中缺少信息或信息不正确。
- 单个用户的多个 extern_uid 值(表示潜在的帐户泄露)。
- 与用户通常的访问模式相比,来自陌生或可疑 IP 地址的 SAML 身份验证。
成功利用的示例日志
转自军哥网络安全读报
暂无评论内容