漏洞情况
近期,火山信安实验室监测到GitLab存在一处严重的SAML身份验证绕过漏洞(CVE-2024-45409)。该漏洞源于GitLab中使用的OmniAuth-SAML和Ruby-SAML库无法正确验证SAML响应的签名,使得攻击者能够制作恶意的SAML响应,从而绕过SAML身份验证机制,获取对GitLab实例的未授权访问权限。这一发现引起了广泛的关注和重视。
0x01漏洞简介
SAML(Security Assertion Markup Language)是一种基于XML的标准,用于在不同的安全域之间交换认证和授权数据,被广泛应用于单点登录(SSO)解决方案。GitLab通过OmniAuth-SAML和Ruby-SAML库来处理基于SAML的身份验证。然而,由于这些库在处理SAML响应时存在签名验证不严格的问题,攻击者可以构造伪造的SAML响应,绕过身份验证机制,实现对GitLab实例的访问。
0x02影响范围
该漏洞影响了多个版本的GitLab CE/EE,具体受影响版本如下:
GitLab CE/EE 17.3.x < 17.3.3
GitLab CE/EE 17.2.x < 17.2.7
GitLab CE/EE 17.1.x < 17.1.8
GitLab CE/EE 17.0.x < 17.0.8
GitLab CE/EE 16.11.x < 16.11.10
此外,OmniAuth-SAML和Ruby-SAML的特定版本也受到影响,具体为:
omniauth-saml <= 2.1.0
ruby-saml <= 1.12.2
1.13.0 <= ruby-saml <= 1.16.0
0x03修复建议
为了缓解该漏洞带来的风险,GitLab官方已发布补丁修复了此问题,并建议受影响的用户尽快升级到以下安全版本:
GitLab CE/EE 17.3.x 升级到 17.3.3 或更高版本
GitLab CE/EE 17.2.x 升级到 17.2.7 或更高版本
GitLab CE/EE 17.1.x 升级到 17.1.8 或更高版本
GitLab CE/EE 17.0.x 升级到 17.0.8 或更高版本
GitLab CE/EE 16.11.x 升级到 16.11.10 或更高版本
或者,用户也可以选择手动更新OmniAuth-SAML和Ruby-SAML库到以下修复版本:
omniauth-saml 升级到 2.2.1、2.1.2、1.10.5 或更高版本
ruby-saml 升级到 1.17.0、1.12.3 或更高版本
此外,GitLab还建议用户对所有账户启用双因素身份验证(2FA),并禁止SAML双因素绕过选项,以增强账户的安全性。