
CVE-2026-46455 재현기 — Apache Camel camel-keycloak의 TokenVerifier.IS_ACTIVE 검사 누락(만료된 액세스 토큰 허용)
IS_ACTIVE 검사 누락 (만료된 토큰 허용)동일한 Apache Camel 취약점에 대한 실행 가능한 PoC 재현 도구로, 런타임별로 하나씩 제공됩니다:
| 런타임 | 디렉터리 | 스택 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-keycloak 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (Camel 4.20.0 번들 포함) |
두 런타임 모두 영향을 받는 버전입니다(4.18.3 / 4.21.0에서 수정됨). 두 프로젝트 모두 동일한 결함을 보여줍니다:
KeycloakSecurityHelper.parseAndVerifyAccessToken은 토큰의 서명, 주체(subject) 및 발급자(issuer)를 검증하지만, Keycloak의 TokenVerifier.IS_ACTIVE 검사를 빠뜨립니다. 따라서 exp / nbf는 전혀 적용되지 않으며 만료된 토큰이 허용됩니다. 유출되거나 탈취된 토큰은 무기한으로 계속 사용할 수 있습니다(CWE-613 + CWE-287).
각 PoC는 exp가 30분 전으로 설정된 올바르게 서명된 액세스 토큰을 생성하고, 이를 취약한 헬퍼와 IS_ACTIVE가 추가된 검증기(수정 사항이 수행하는 방식) 양쪽에 통과시켜, 헬퍼가 IS_ACTIVE가 거부하는 토큰을 수용함을 입증합니다. Keycloak 서버는 필요하지 않습니다. 토큰은 프로세스 내에서 생성된 RSA 키로 서명됩니다.
각 하위 디렉터리는 자체 Dockerfile, docker-compose.yml, README를 포함하는 독립적인 프로젝트입니다. 간단히 말해, 둘 중 하나에 대해 다음을 실행합니다:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
보안 권고: https://camel.apache.org/security/CVE-2026-46455.html
이 재현 도구는 공개적으로 알려지고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템을 대상으로 사용하지 마십시오.
| 속성 | 값 |
|---|
| 구성 요소 | camel-keycloak |
| 영향받는 클래스 | org.apache.camel.component.keycloak.security.KeycloakSecurityHelper#parseAndVerifyAccessToken |
| CWE | CWE-613 (불충분한 세션 만료) + CWE-287 (부적절한 인증) |
| 영향 | 만료되었거나 아직 유효하지 않은 액세스 토큰이 허용됨 → 토큰 수명 밖의 요청이 인증됨 |
| 영향받는 버전 | 4.18.0 이상 4.18.3 미만, 4.19.0 이상 4.21.0 미만 (헬퍼는 4.18.0에서 도입되었으며, 4.14.x LTS는 영향 없음) |
| 수정된 버전 | 4.18.3, 4.21.0 |
| JIRA | CAMEL-23504 |