CVE-2026-95663
Apache Camel: Camel-Keycloak 보안 정책이 캐시된 토큰 인트로스펙션 결과가 토큰 만료에 의해 제한되지 않아 만료된 액세스 토큰을 허용함
- 게시됨
- 2026. 10. 26.
- 업데이트됨
- 2026. 10. 26.
- CNA 할당 중
- apache
- 증거 관찰됨
- 2026. 10. 30.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N낮음 · 다음 30일
- 백분위수
- 15.6%
- 모델 날짜
- 2026. 10. 29.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
Apache Camel Keycloak 컴포넌트의 불충분한 세션 만료(Insufficient Session Expiration) 취약점입니다. 이 문제는 Apache Camel 4.16.0 이상 4.18.5 미만, 4.19.0 이상 4.22.2 미만 버전에 영향을 미칩니다. camel-keycloak의 KeycloakSecurityPolicy에서 토큰 인트로스펙션이 활성화된 경우(useTokenIntrospection=true), 보안 프로세서는 요청의 액세스 토큰을 Keycloak의 OAuth 2.0 토큰 인트로스펙션 엔드포인트로 전송하여 검증하고, 응답이 해당 토큰을 active로 보고하는 동안 토큰을 수락합니다. 인트로스펙션 엔드포인트는 토큰의 exp(만료) 시간이 지나면 해당 토큰을 inactive로 보고하므로, 이 경로에서는 active 플래그가 토큰 만료를 강제하는 역할을 합니다. 인트로스펙션 결과는 기본적으로 캐시되며(introspectionCacheEnabled=true, introspectionCacheTtl=60초), 컴포넌트에 포함된 두 캐시 구현인 ConcurrentMapTokenCache와 CaffeineTokenCache는 모두 항목이 삽입된 후 고정된 시간이 지나면 만료시켰으며, 캐시된 응답이 이미 담고 있던 exp 클레임으로 그 수명을 제한하지 않았습니다. KeycloakSecurityProcessor는 다시 인트로스펙션을 사용하는 모든 경로에서 결과의 active 플래그만 확인했고, exp를 현재 시간과 비교하지 않았습니다. 따라서 토큰이 만료되기 직전에 캐시된 응답은 동일한 토큰을 가진 이후 요청에 대해 토큰 만료 후 최대 설정된 TTL(유효 기간) 동안 제공되었고, 해당 요청들은 만료된 토큰이 지니고 있던 역할과 권한으로 허용되었습니다. 이는 토큰 인트로스펙션을 정의하는 RFC 7662가 exp를 포함하는 응답은 그 시간 이후로 캐시되어서는 안 된다고 명시하고 있음에도 발생합니다. 액세스 토큰은 일반적으로 Authorization 헤더의 베어러 토큰으로, 호출자가 각 요청과 함께 제공하므로, 잠시 전까지 유효했던 토큰을 보유한 호출자는 캐시 항목이 살아 있는 동안 만료 후에도 계속 사용할 수 있었습니다. 이 취약점의 영향 범위는 introspectionCacheTtl로 제한되며, 기본값은 60초이고 내부 서비스에 대한 문서의 권장 사항을 따른 경우 300~600초입니다. 또한 동일한 Camel 프로세스가 토큰이 아직 활성 상태일 때 인트로스펙션하고 캐시한 토큰에 대해서만 발생합니다. 이 문제는 토큰이 이미 지니고 있던 것 이상의 권한을 부여하지 않습니다. 즉, 토큰 위조나 권한 상승을 허용하지 않으며, 토큰 인트로스펙션은 기본적으로 활성화되어 있지 않으므로 심각도가 중간(medium)으로 평가됩니다. 인트로스펙션이 비활성화된 경우 사용되는 로컬 JWT 검증 경로는 이 문제의 영향을 받지 않습니다. 사용자는 이 문제를 수정한 버전 4.23.0으로 업그레이드할 것을 권장합니다. 4.22.x 릴리스 스트림을 사용 중인 경우 4.22.2로 업그레이드할 것을 권장합니다. 4.18.x 릴리스 스트림을 사용 중인 경우 4.18.5로 업그레이드할 것을 권장합니다. 4.16.x, 4.17.x 및 4.19.x~4.21.x 릴리스 라인은 이 문제가 해결되기 전에 지원이 종료되었으며 수정 사항을 받지 못하므로, 해당 버전의 배포 환경은 지원되는 릴리스로 이동해야 합니다. 즉시 업그레이드할 수 없는 배포 환경의 경우 KeycloakSecurityPolicy에서 introspectionCacheEnabled=false로 설정하여 모든 요청이 인트로스펙션 엔드포인트에 대해 검사되도록 하십시오. 이 엔드포인트는 만료된 토큰을 inactive로 보고하며, 대신 요청당 한 번의 인트로스펙션 호출 비용이 발생합니다. introspectionCacheTtl을 낮추는 것은 영향 범위를 좁힐 뿐 완전히 해소하지는 못합니다.
소스
CVE-2026-95663에 대한 실행 가능한 개념 증명 재현기로, Apache Camel camel-keycloak이 토큰 만료 이후에도 캐시된 토큰 인트로스펙션 결과를 제공하던 문제를 다루며, Spring Boot 및 Quarkus 데모를 포함합니다.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.