일단 진행시켜

GitLab의 취약성 이해: SAML 보안 및 업데이트에 대한 교훈 본문

🗞️ 보안 동향 파악 및 나의 생각 정리

GitLab의 취약성 이해: SAML 보안 및 업데이트에 대한 교훈

2024. 9. 21. 16:27

1. GitLab Patches Critical Authentication Bypass Vulnerability

https://www.securityweek.com/gitlab-patches-critical-authentication-bypass-vulnerability/

 

 

[ 요약정리 ]

GitLab Community Edition(CE) 및 Enterprise Edition(EE)에 대한 보안 업데이트가 출시되었으며, 인증 우회로 이어지는 심각한 취약점이 해결됐다.

 

문제는 CVE-2024-45409(CVSS 점수 10/10) 으로, SAML 기반 인증 GitLab CE/EE 인스턴스에 영향을 준다.

XML 기반 마크업 언어인 SAML은 Ruby SAML 라이브러리를 사용하여 SAML 권한 부여의 클라이언트 측을 구현하며, 라이브러리는 signature wrapping에 취약하다.

 

GitLab은 위 문제의 악용 방지를 위해서는 사용자는 자체 관리 인스턴스의 모든 사용자 계정에 대해 2FA를 활성화해야 하며, 코드협업 플랫폼에서 SAML 2단계 우회 옵션 허용을 금지해야 함을 권고했다. 

 

 

1. SAML(Security Assertion Markup Language)?

  • 한 번만 로그인하여 여러 앱에 액세스할 수 있도록 해주는 인증 프로세스
  •  SSO(Single Sign-On)을 통해 하나의 사용자 이름과 암호로 여러 사이트, 서비스, 앱에 액세스 할 수 있다
  • 기억해야 하는 암호의 개수를 줄이면 사용자가 더욱 쉽게 사용할 수 있고, 패스워드 분실 위험을 줄일 수 있다
  • 사용자가 로그인하면 ID 공급자가 사용자를 확인한 후, 사용자가 액세스 하려는 사이트, 서비스 또는 앱의 서비스 공급자 측으로 인증 데이터를 전달

 

SAML 인증 프로세스

3개의 역할(?)이 사용된다.

역할 내용
보안 주체(사용자) 액세스하고자 하는 인간 사용자
ID 공급자(IdP) Google 같은 서비스와 같이 사용자 신원을 확인하는 신뢰할 수 있는 시스템
SSO는 본질적으로 *IdP 대표자 역할을 수행
*IdP: 일반적으로 로그인 프로세스를 통해 사용자 ID를 저장하고 확인하는 SW 서비스
서비스 공급자(SP) 사용자가 액세스하려는 애플리케이션 또는 서비스
애플리케이션 또는 서비스를 제공하고 IdP를 신뢰하여 사용자 신원을 확인

 

1. 사용자가 서비스 공급자에 액세스를 시도

보안 주체가 서비스(Service Provider)에 액세스를 시도한다.

SP는 아직 사용자가 누군지 모르기 때문에 사용자를 IdP로 리디렉션 처리한다.

 

2. ID 공급자로 리디렉션

IdP로 리디렉션된다.

이 부분에서 로그인을 안 했을 경우, 사용자에게 로그인하라는 메시지가 표시된다.

 

3. 사용자가 IdP에 로그인

사용자가 자격 증명(ID, PW)을 입력하면 IdP가 해당 ID를 확인한다.

 

4. IdP가 SAML Assertion을 생성

인증되면 IdP는 SAML Assertion(사용자 ID 정보가 포함된 토큰)을 생성하여 SP에 전달한다.

 

5. SP가 액세스 권한을 부여

SAML Assertion을 수신한 SP는 이를 확인 후, 사용자가 서비스에 액세스 할 수 있도록 허용한다.

 

2. SSO(Single Sign-On)?

  • 사용자가 한 번의 로그인으로 여러 애플리케이션이나 시스템에 접근할 수 있도록 하는 인증 방식
  • 하나의 인증 정보(아이디, 비밀번호 등)로 다양한 서비스에서 로그인하는 과정에서 반복적인 인증 절차를 생략할 수 있다.
  • 일반적으로 중앙 인증 시스템을 통해 이루어지며, 그 과정에서 토큰이나 쿠키 같은 인증 정보를 교환하여 사용자의 신원을 각 애플리케이션이 신뢰할 수 있게 한다.
  • OAuth, SAML, OpenID Connect 등이 있다.

 

 

 

결론

GitLab에서 공격자가 비밀번호 없이 시스템에 들어갈 수 있는 CVE-2024-45409 공격이 발견됐다. 

이 취약점 때문에 인증(로그인) 절차를 건너뛰고 시스템에 접근할 수 있게 되었다.

GitLab은 이 문제를 해결하기 위해 긴급 업데이트를 배포했고, 모든 사용자에게 업데이트를 적용할 것을 권장하고 있다.

 

 


 

🤔 이에 대한 나의 생각

GitLab의 취약점에 대해 우려와 인식이 교차하는 느낌을 받은 날이다. 취약점이 어떻게 무단 액세스를 허용하는지에 대해 더 많이 알수록  GitLab을 비롯한 여러 서비스에서 업데이트를 권장하는 이유를 더 잘 이해할 수 있었던 것 같다.

따라서, 시스템을 안전하게 유지하려면 최신 버전으로 업데이트하는 것이 중요하다. 

 

위 아티클을 읽고 Ruby SAML 라이브러리의 기술적 측면과 signature wrapping이 작동하는 방식에 대해 더 깊이 이해하고 싶다는 마음이 생겼다. (SAML 구현의 잠재적인 약점을 더 잘 파악하는 데 도움이 될 거니까!)

 

다양한 인증 취약점을 배우면서 보안 조치를 적극적으로 이해하고 실제 애플리케이션에서 효과적으로 구현하는 방법의 중요성에 대해 배워갈 수 있는 것 같다.