CVE-2026-46455
Full vulnerability record from the local CVENow database.
Description
Insufficient Session Expiration vulnerability in Apache Camel Keycloak Component. The camel-keycloak security helper KeycloakSecurityHelper.parseAndVerifyAccessToken builds a Keycloak TokenVerifier using withChecks(...) with only the subject-exists check and the realm-URL (issuer) check. Keycloak's TokenVerifier.withChecks(...) appends to an initially empty check list - the upstream default checks are installed only when withDefaultChecks() is called - so the built-in IS_ACTIVE predicate, which validates the token's exp (expiration) and nbf (not-before) claims, is never applied. As a result the helper verifies the token signature, subject and issuer but does not enforce the token's validity window: an access token that is expired, or not yet valid, is accepted as valid. Routes that rely on this helper to authenticate inbound requests therefore accept access tokens that are outside their intended lifetime. This issue affects Apache Camel: from 4.18.0 before 4.18.3, from 4.19.0 before 4.21.0. Users are recommended to upgrade to version 4.21.0, which fixes the issue. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.3. The fix makes KeycloakSecurityHelper.parseAndVerifyAccessToken include the TokenVerifier.IS_ACTIVE check so that expired or not-yet-valid access tokens are rejected, aligning the helper with Keycloak's default check set. For deployments that cannot upgrade immediately, enforce token expiration outside the helper - for example validate the access token's exp/nbf claims in the route before trusting it, keep Keycloak access-token lifetimes short, and ensure any upstream gateway or resource server also validates the token validity window.
View original CVE JSON
{
"id": "CVE-2026-46455",
"sourceIdentifier": "[email protected]",
"published": "2026-07-06T09:16:36.573",
"lastModified": "2026-10-25T15:10:00.147",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Insufficient Session Expiration vulnerability in Apache Camel Keycloak Component.\n\nThe camel-keycloak security helper KeycloakSecurityHelper.parseAndVerifyAccessToken builds a Keycloak TokenVerifier using withChecks(...) with only the subject-exists check and the realm-URL (issuer) check. Keycloak's TokenVerifier.withChecks(...) appends to an initially empty check list - the upstream default checks are installed only when withDefaultChecks() is called - so the built-in IS_ACTIVE predicate, which validates the token's exp (expiration) and nbf (not-before) claims, is never applied. As a result the helper verifies the token signature, subject and issuer but does not enforce the token's validity window: an access token that is expired, or not yet valid, is accepted as valid. Routes that rely on this helper to authenticate inbound requests therefore accept access tokens that are outside their intended lifetime.\nThis issue affects Apache Camel: from 4.18.0 before 4.18.3, from 4.19.0 before 4.21.0.\n\nUsers are recommended to upgrade to version 4.21.0, which fixes the issue. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.3. The fix makes KeycloakSecurityHelper.parseAndVerifyAccessToken include the TokenVerifier.IS_ACTIVE check so that expired or not-yet-valid access tokens are rejected, aligning the helper with Keycloak's default check set. For deployments that cannot upgrade immediately, enforce token expiration outside the helper - for example validate the access token's exp/nbf claims in the route before trusting it, keep Keycloak access-token lifetimes short, and ensure any upstream gateway or resource server also validates the token validity window."
},
{
"lang": "es",
"value": "Vulnerabilidad de expiración de sesión insuficiente en el componente Keycloak de Apache Camel.\n\nEl asistente de seguridad camel-keycloak KeycloakSecurityHelper.parseAndVerifyAccessToken construye un TokenVerifier de Keycloak usando withChecks(...) con solo la verificación de existencia de sujeto y la verificación de URL de realm (emisor). TokenVerifier.withChecks(...) de Keycloak añade a una lista de verificación inicialmente vacía - las verificaciones predeterminadas ascendentes se instalan solo cuando se llama a withDefaultChecks() - por lo que el predicado IS_ACTIVE incorporado, que valida las reclamaciones exp (expiración) y nbf (no antes) del token, nunca se aplica. Como resultado, el asistente verifica la firma, el sujeto y el emisor del token, pero no aplica la ventana de validez del token: un token de acceso que ha expirado, o aún no es válido, se acepta como válido. Las rutas que dependen de este asistente para autenticar solicitudes entrantes, por lo tanto, aceptan tokens de acceso que están fuera de su vida útil prevista.\nEste problema afecta a Apache Camel: desde 4.18.0 antes de 4.18.3, desde 4.19.0 antes de 4.21.0.\n\nSe recomienda a los usuarios actualizar a la versión 4.21.0, que corrige el problema. Si los usuarios están en la rama de versiones 4.18.x, se sugiere que actualicen a 4.18.3. La corrección hace que KeycloakSecurityHelper.parseAndVerifyAccessToken incluya la verificación TokenVerifier.IS_ACTIVE para que los tokens de acceso caducados o aún no válidos sean rechazados, alineando el asistente con el conjunto de verificaciones predeterminado de Keycloak. Para implementaciones que no pueden actualizarse inmediatamente, aplique la expiración del token fuera del asistente - por ejemplo, valide las reclamaciones exp/nbf del token de acceso en la ruta antes de confiar en él, mantenga cortas las vidas útiles de los tokens de acceso de Keycloak, y asegúrese de que cualquier puerta de enlace ascendente o servidor de recursos también valide la ventana de validez del token."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "Apache Software Foundation",
"product": "Apache Camel",
"defaultStatus": "unaffected",
"collectionURL": "https://repo.maven.apache.org/maven2",
"packageName": "org.apache.camel:camel-keycloak",
"versions": [
{
"version": "4.18.0",
"lessThan": "4.18.3",
"versionType": "semver",
"status": "affected"
},
{
"version": "4.19.0",
"lessThan": "4.21.0",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 9.8,
"baseSeverity": "CRITICAL",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 3.9,
"impactScore": 5.9
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-06T19:29:09.924590Z",
"id": "CVE-2026-46455",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-613"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:apache:camel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.18.0",
"versionEndExcluding": "4.18.3",
"matchCriteriaId": "3F672322-AA52-4621-B687-76B5AC9D619F"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:a:apache:camel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.19.0",
"versionEndExcluding": "4.21.0",
"matchCriteriaId": "1C2A1A7A-FADC-470F-8265-FA126AFD94ED"
}
]
}
]
}
],
"references": [
{
"url": "https://camel.apache.org/security/CVE-2026-46455.html",
"source": "[email protected]",
"tags": [
"Mitigation",
"Vendor Advisory"
]
},
{
"url": "http://www.openwall.com/lists/oss-security/2026/07/05/8",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Mailing List",
"Third Party Advisory"
]
}
]
}