🇰🇷 한글 설명
Keycloak의 Device Authorization Grant 흐름에서 토큰 교환 시 사용자 계정의 잠금 상태를 확인하지 않는 결함이 발견되었습니다. 공격자가 잠긴 계정에 대해 활성 세션을 보유하고 있다면, 장치 로그인 프로세스를 완료하여 새로운 보안 토큰을 발급받을 수 있습니다. 이를 통해 계정이 무차별 대입 공격 방지를 위해 일시적으로 비활성화된 상태에서도 공격자가 접근 권한을 유지할 수 있습니다.
💡 쉬운 설명
비밀번호를 여러 번 틀려 계정이 잠겨야 하는 상황임에도, 이미 로그인된 상태를 이용하면 계속해서 새로운 접속 권한을 얻을 수 있는 문제입니다. 결과적으로 계정이 차단되지 않고 공격자가 계속해서 시스템에 머무를 수 있게 됩니다.
🇺🇸 원문 (English)
A flaw was found in the Device Authorization Grant flow of Keycloak, an identity and access management solution. The issue occurs because the token redemption process fails to check if a user account is currently locked due to brute-force protection. If an attacker has an active session for a locked account, they can complete the device login process and receive new security tokens. This allows the attacker to maintain access to the account even when it should be temporarily disabled to prevent unauthorized entry.
📍 영향받는 시스템
Keycloak (Device Authorization Grant flow를 사용하는 버전)
⚔️ 공격 벡터
잠긴 계정의 활성 세션을 이용한 토큰 교환(Token Redemption) 프로세스 악용
🛡️ 대응 방법
Keycloak을 최신 보안 패치가 적용된 버전으로 업데이트하고, 토큰 교환 시 계정 잠금 상태를 검증하도록 설정해야 합니다.
🔧 검증 코드
계정이 잠긴 상태에서 위 요청을 보냈을 때, 새로운 access_token이 발급된다면 취약한 상태이며 오류가 발생해야 정상입니다.
curl -s -X POST https://<keycloak-server>/auth/realms/<realm>/protocol/openid-connect/token -d 'grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code=<code&client_id=<client_id>'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
💻 영향받는 소프트웨어
IBM Verify Identity Access