Keycloak에서 SAML 서명 검증을 우회해 연합 계정을 탈취할 수 있는 취약점이 발견됐다.
CVE-2026-117691, CVSS 9.1.
먼저 Keycloak은 무엇일까?
Keycloak은 Red Hat에서 시작된 오픈소스 인증·접근 관리(IAM) 서버다.
기업이 여러 웹사이트와 애플리케이션의 로그인, 계정 관리, 권한 확인을 중앙에서 처리할 수 있도록 해준다.
예를 들어 사내 그룹웨어, Git 서버, 클라우드 관리 페이지가 각각 로그인 시스템을 운영하는 대신 Keycloak에 인증을 맡기는 방식이다.
한 번 로그인하면 여러 서비스에 접근하는 SSO(Single Sign-On)도 지원한다.
현재는 CNCF 생태계에 속한 오픈소스 프로젝트다.
이번 취약점은 Keycloak이 외부 인증 시스템과 SAML 방식으로 통신하는 과정에서 발생했다.
문제는 서명 검증과 실제 메시지 처리 과정이 서로 다른 파라미터 해석 규칙을 사용했다는 것이다.
공격자는 하나의 요청에 두 메시지를 넣는다.
① %53AMLResponse
서명되지 않은 조작 메시지
② SAMLResponse
정상적으로 서명된 메시지
서명 검증은 두 번째 메시지를 확인하지만, 실제 처리 과정에서는 URL 인코딩을 해제하면서 첫 번째 메시지를 선택할 수 있다.
결국 정상적인 서명을 확인하고도 검증받지 않은 메시지가 처리된다.
공격에 성공하면 연합 인증 사용자의 계정을 탈취할 수 있다.
흥미로운 점은 Keycloak에서 유사한 파서 불일치 문제가 이전에도 발견됐다는 것이다.
이번에는 세미콜론이 아니라 URL 인코딩된 파라미터명이 공격에 사용됐다.
핵심은 서명 검증 자체가 아니라, 검증한 데이터와 실제 처리한 데이터가 달랐다는 점이다.
수정 버전:
26.8.2 / 26.6.9 / 26.4.18
SSO처럼 여러 서비스가 하나의 인증 서버를 신뢰하는 구조에서 중앙 인증 시스템의 취약점은 어디까지 영향을 미칠 수 있을까?
#Keycloak #SAML #사이버보안