Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
keycloak-cve-2026-18963-hunt — Keycloak 데이터베이스에서 CVE-2026-18963 악용 흔적(Keycloak 인증되지 않은 계정 탈취)을 탐색합니다. | Kitploit
도구/GitHubGitHub/kyos-public/keycloak-cve-2026-18963-hunt
Vulnerability AnalysisDigital ForensicsAuthenticationIncident ResponseDatabase SecurityLog Analysis
GitHubkyos-public/keycloak-cve-2026-18963-hunt

keycloak-cve-2026-18963-hunt

Keycloak 데이터베이스에서 CVE-2026-18963 악용 흔적(Keycloak 인증되지 않은 계정 탈취)을 탐색합니다.

저장소 보기
914시간 37분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-18963: Keycloak 계정 탈취, 악용 흔적 추적

Keycloak PostgreSQL 데이터베이스에서 CVE-2026-18963 악용 흔적(reset-credentials 흐름을 통한 인증되지 않은 계정 탈취)을 검색하는 psql 스크립트입니다.

KYOS가 게시했습니다. 운영 중인 Keycloak 배포를 패치하면서 노출 기간 동안 아무도 탈취되지 않았는지 확인하기 위해 작성했습니다.

취약점

CVE-2026-18963은 keycloak-services의 reset-credentials 흐름에 존재하는 결함입니다(keycloak#51833). 인증되지 않은 공격자가 메일 확인 링크를 클릭하지 않고도 모든 사용자의 비밀번호 재설정 프로세스를 완료한 다음 해당 계정에 새 비밀번호를 설정할 수 있습니다. 사용자 상호작용은 필요하지 않습니다.

심각도: Critical, CVSS v3.1 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), Red Hat 및 NVD 기준. 근본 원인은 인증 흐름에서의 부적절한 상태 검증이며, keycloak#51844에서 수정되었습니다.

영향받는 버전 / 수정된 버전

도구 다운로드
스트림수정 버전
26.7.x26.7.2 (릴리스 노트)
26.6.x26.6.6
26.4.x (LTS)26.4.15
26.826.8.0

지원되는 스트림에서 해당 버전 미만의 모든 버전은 취약합니다. 지원이 종료된 릴리스(26.5.x, 26.3 및 이전 버전)에는 수정 사항이 제공되지 않으므로 노출된 것으로 간주하고 수정된 스트림으로 업그레이드하세요. Red Hat은 레거시 RH-SSO 7을 영향받지 않는 것으로 명시합니다. Red Hat Build of Keycloak 26.4/26.6은 26.4.15-1 / 26.6.6-1에서 수정되었습니다.

즉시 패치할 수 없는 경우의 해결 방법

셀프 서비스 비밀번호 재설정을 비활성화하면 취약한 진입점이 제거됩니다. 모든 realm에 대해 Admin console > Realm settings > Login > "Forgot password"를 끄세요. 관리자 API를 통해서는 PUT /admin/realms/{realm}에 {"resetPasswordAllowed": false}를 포함하여 호출합니다.

이렇게 하면 login-actions/reset-credentials 엔드포인트가 차단되지만 정당한 사용자가 자신의 비밀번호를 재설정하는 것도 막으므로 업그레이드할 때까지의 임시 방편으로 취급하세요. Red Hat은 이 CVE에 대해 공식적으로 권장하는 완화 조치를 제공하지 않습니다. 패치가 유일한 실제 해결책입니다.

스크립트가 확인하는 내용

cve-2026-18963-keycloak-hunt.sql은 네 가지 읽기 전용 쿼리를 실행합니다:

쿼리발견 내용
Q0realm이 로그인/관리자 이벤트를 저장하는지 여부와 그 TTL. 이벤트가 꺼져 있거나 만료된 경우 Q2/Q3의 빈 결과는 아무것도 증명하지 못합니다.
Q1노출 기간 내에 설정된 모든 비밀번호 자격 증명(credential.created_date). 이는 탈취 그 자체이며 이벤트 로깅이 꺼져 있어도 작동합니다.
Q2재설정/자격 증명 로그인 이벤트로, 이전 24시간 내 SEND_RESET_PASSWORD 없이 완료된 재설정에 플래그를 지정합니다(no_email_before = t). 이 플래그가 CVE 시그니처입니다. 공격자는 메일을 트리거한 적이 없습니다.
Q3관리자 API 자격 증명 재설정 및 execute-actions 작업으로, 관리자 주도 경로를 배제하기 위한 것입니다.

사용법

root@kitploit:~
# defaults: realm 'master', window since 2026-06-01
psql -U keycloak -d keycloak -f cve-2026-18963-keycloak-hunt.sql

# explicit realm and window (run once per realm, quote values exactly like this)
psql -U keycloak -d keycloak \
  -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f cve-2026-18963-keycloak-hunt.sql

since를 취약한 버전이 출시되기 직전 시점으로 설정하세요. Kubernetes에서는:

root@kitploit:~
kubectl exec -it my-postgres-pod -- \
  psql -U keycloak -d keycloak -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f - < cve-2026-18963-keycloak-hunt.sql

결과 해석

Q1의 행이 자동으로 침해를 의미하지는 않습니다. 각 행을 알려진 정당한 원인(셀프 서비스 재설정, 헬프데스크 작업, 신규 등록)과 대조하고 설명되지 않는 모든 항목을 탈취 후보로 취급하세요.

RESET_PASSWORD, UPDATE_CREDENTIAL 또는 UPDATE_PASSWORD에서 no_email_before = t가 표시된 Q2 행은 이 CVE가 악용되었음을 나타내는 가장 강력한 지표입니다. ip_address 열을 액세스 로그와 대조하세요.

Q0을 먼저 확인하세요. 로그인 이벤트는 만료되며(events_expiration) 완전히 비활성화될 수도 있습니다. Q1은 만료되지 않으므로 가장 신뢰할 수 있는 확인 방법입니다.

탈취를 발견한 경우

  1. 영향을 받은 계정을 비활성화하거나 신뢰할 수 있는 채널을 통해 비밀번호 재설정을 강제하세요.
  2. 계정의 세션과 오프라인 토큰을 해지하고(Admin console > Sessions) 해당 계정이 접근할 수 있었던 모든 비밀(secret)을 교체하세요.
  3. 조사 범위를 넓히세요: Q2의 타임스탬프와 IP 주변의 리버스 프록시/인그레스 로그, 자격 증명 변경 후 계정이 수행한 작업, Keycloak을 통해 페더레이션된 다운스트림 애플리케이션.

주의사항

  • 읽기 전용이지만, 복제본(replica)이나 백업에 대해 실행하는 것을 권장합니다.
  • PostgreSQL의 Keycloak 26.x용으로 작성되었습니다. 테이블 이름은 최근 버전에서 안정적이지만 다른 데이터베이스나 이전 버전에서는 확인하세요.
  • 결과가 없다고 해서 침해가 없었다는 증거는 아닙니다(Q0 참조). 특히 이벤트 보존 기간이 짧거나 로깅이 비활성화된 경우 더욱 그렇습니다.

라이선스

MIT, LICENSE 참조. 있는 그대로 제공되며, 어떠한 보증도 없습니다.