🇰🇷 한글 설명
Keycloak이 MySQL 또는 MariaDB와 함께 무상태(stateless) 모드로 배포될 때, 데이터베이스 드라이버와 애플리케이션 로직 간의 행 수(row-count) 처리 방식 차이로 인해 재사용 방지 기능이 무력화되는 결함이 발견되었습니다. 공격자는 이를 통해 탈취한 JWT 클라이언트 어설션, DPoP 증명 또는 TOTP 코드를 재사용하여 토큰 엔드포인트나 로그인 흐름에 무단으로 접근할 수 있습니다.
💡 쉬운 설명
한 번만 사용되어야 하는 보안 코드나 인증 정보를 공격자가 가로채서 다시 사용할 수 있는 보안 구멍이 발견되었습니다. 이로 인해 공격자가 사용자의 계정으로 로그인하거나 권한을 획득할 위험이 있습니다.
🇺🇸 원문 (English)
A flaw was found in Keycloak. When deployed in stateless mode with MySQL or MariaDB, a mismatch in row-count semantics between the database driver and Keycloak's application logic allows an attacker to bypass replay protection. This vulnerability enables an attacker who intercepts single-use security artifacts, such as JWT client assertions, DPoP proofs, or one-time password (TOTP) codes, to replay them. Successful exploitation grants unauthorized access to the token endpoint or login flow.
📍 영향받는 시스템
MySQL 또는 MariaDB를 사용하는 stateless 모드의 Keycloak
⚔️ 공격 벡터
가로챈 일회용 보안 인증 정보(JWT, DPoP, TOTP 등)를 재전송하여 인증 우회
🛡️ 대응 방법
Keycloak을 최신 보안 패치가 적용된 버전으로 업데이트하거나 데이터베이스 드라이버 및 설정 검토
🔧 검증 코드
출력된 Keycloak 버전을 확인하여 취약점이 해결된 패치 버전인지 보안 공지사항과 대조하십시오.
keycloak --version 2>/dev/null || echo 'Keycloak not found in PATH'