Kant's IT/Vulnerability
ruby-saml의 XML 파서 차이점 악용한 인증 우회 취약점, GitHub이 발견
Kant Jo
2025. 4. 16. 14:30
GitHub Uncovers New ruby-saml Vulnerabilities Allowing Account Takeover Attacks
- 주요 개요
- GitHub 보안연구팀은
ruby-saml
라이브러리에서 계정 탈취(Account Takeover) 가능성이 있는 고위험 인증 우회 취약점 두 건을 발견하고 공개함 - 취약점은 각각 CVE-2025-25291 및 CVE-2025-25292로 CVSS 기준 8.8점에 해당하며, SAML 기반 SSO 환경에서 인증 우회 및 사용자 위장이 가능함
- 영향을 받는 버전은 다음과 같음
- 1.12.4 미만 버전
- 1.13.0 이상 1.18.0 미만 버전
- GitHub 보안연구팀은
- 취약점 상세 원인
REXML
과Nokogiri
XML 파서 간 해석 방식 차이(parser differential)로 인해 동일한 XML이 서로 다른 문서 구조로 파싱됨- 이로 인해 공격자는
Signature Wrapping Attack
을 수행할 수 있으며, SAML 응답 내 서명을 우회하여 검증되지 않은 Assertion을 삽입하고도 검증을 통과시킬 수 있음 - GitHub은 이 취약점을 SAML 응답 해시 검증과 서명 검증 간 불일치에서 비롯된 구조적 문제라고 분석함
- 보안 영향
- 공격자가 유효한 SAML 서명을 포함한 문서를 소지하고 있다면, 해당 서명을 재사용하여 원하는 사용자로 인증 우회가 가능함
- 실제로 GitHub은 공격자가 SAML 응답을 위조해 조직 내 모든 사용자로 로그인할 수 있는 공격 경로를 제시함
- 이는 SAML IdP(Identity Provider) 기반 환경 전반의 사용자 신뢰성 붕괴로 이어질 수 있음
- 추가 취약점 (CVE-2025-25293)
ruby-saml
에서 SAML 압축 응답 처리 중 발생할 수 있는 원격 서비스 거부(DoS) 취약점도 병행 패치됨- CVSS 7.7점이며, 해당 취약점 또한 1.12.4 및 1.18.0 버전에서 수정됨
- GitLab과의 관련성
- GitHub은 본 취약점을 GitLab의 ruby-saml 구현 내에서 직접적으로 식별하고, GitLab 보안팀에 통보함
- GitLab은 즉시 17.7.7, 17.8.5, 17.9.2 버전에서 CE/EE 모두를 패치하여 대응
- 공격이 성공하려면 기본적으로 유효한 계정 또는 SAML 서명 키에 접근한 공격자가 있어야 하며, 이는 2차 피해 또는 공급망 침투 가능성을 시사
- 보안 권고
- ruby-saml을 사용하는 모든 프로젝트는 반드시 1.12.4 또는 1.18.0 이상으로 업데이트
- SAML SSO를 사용하는 환경에서는 다음과 같은 추가 보호 조치 권장
- 서명 키의 보호 및 키 회전 주기 검토
- XML 파서 통일성 검증 및 Signature Wrapping 방지 설정 적용
- SAML 응답 구조 및 assertion 처리 방식에 대한 보안 검토 강화
- GitLab 사용자 대상: 2FA 활성화, SAML 우회 비활성화, 신규 사용자 관리자 승인 설정
- 결론
- 이번 취약점은 SAML 인증의 기반 신뢰 체계를 위협하는 구조적 결함으로, 특히 XML 파서 간의 비일관성이 보안에 어떤 영향을 미치는지 보여주는 대표 사례임
- SSO 환경 및 연동 시스템 전반의 구조적 위험 진단 필요성이 부각되며, SAML 기반 보안구조는 서명 위치, assertion 구문, 파서 논리 차이 등 다층적인 검토가 필수임
- 오픈소스 기반 인증 모듈 활용 시 패치 주기와 외부 알림 수용체계의 성숙도가 중요하며, 내부 IdP 운영 기관은 위변조 방지를 위한 명확한 인증 경로 검증 절차 마련이 요구됨