CVE-2026-95663
Apache Camel: la policy di sicurezza Camel-Keycloak accetta access token scaduti perché i risultati della token introspection in cache non sono limitati dalla scadenza del token
- Pubblicato
- 26 ott 2026
- Aggiornato
- 26 ott 2026
- Assegnazione CNA
- apache
- Evidenza osservata
- 30 ott 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:NBasso · prossimi 30 giorni
- Percentile
- 15,6%
- Data del modello
- 29 ott 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Vulnerabilità di scadenza insufficiente della sessione nel componente Apache Camel Keycloak. Il problema riguarda Apache Camel: dalla 4.16.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.2. Quando l'introspezione dei token è abilitata su KeycloakSecurityPolicy di camel-keycloak (useTokenIntrospection=true), il processore di sicurezza convalida il token di accesso di una richiesta inviandolo all'endpoint di introspezione dei token OAuth 2.0 di Keycloak e accetta il token finché la risposta lo riporta come attivo. L'endpoint di introspezione segnala un token come inattivo una volta trascorso il suo tempo exp (di scadenza), quindi su questo percorso è il flag active a far rispettare la scadenza del token. I risultati dell'introspezione sono memorizzati nella cache per impostazione predefinita (introspectionCacheEnabled=true, introspectionCacheTtl=60 secondi), ed entrambe le implementazioni della cache fornite con il componente, ConcurrentMapTokenCache e CaffeineTokenCache, facevano scadere una voce dopo un tempo fisso dall'inserimento, senza limitare tale durata in base al claim exp che la risposta memorizzata nella cache già conteneva. KeycloakSecurityProcessor, a sua volta, controllava solo il flag active del risultato, su ogni percorso che utilizza l'introspezione, e non confrontava mai exp con l'ora corrente. Una risposta memorizzata nella cache poco prima della scadenza del token veniva quindi servita alle richieste successive che portavano lo stesso token fino al tempo di vita configurato dopo la scadenza del token, e tali richieste venivano ammesse con i ruoli e i permessi che il token scaduto aveva portato, sebbene la RFC 7662, che definisce l'introspezione dei token, stabilisca che una risposta contenente exp non deve essere memorizzata nella cache oltre tale momento. Il token di accesso è fornito dal chiamante con ogni richiesta, tipicamente come token bearer nell'header Authorization, quindi un chiamante in possesso di un token valido pochi istanti prima poteva continuare a usarlo dopo la scadenza, per tutto il tempo in cui la voce in cache rimaneva viva. La finestra è limitata da introspectionCacheTtl, che è di 60 secondi per impostazione predefinita e di 300-600 secondi dove è stata seguita la raccomandazione della documentazione per i servizi interni, e si apre solo per un token che lo stesso processo Camel ha sottoposto a introspezione e memorizzato nella cache mentre il token era ancora attivo. Il problema non concede nulla oltre a ciò che il token già portava: non consente alcuna falsificazione di token né escalation di privilegi, e l'introspezione dei token non è abilitata per impostazione predefinita, motivo per cui la gravità è valutata media. Il percorso di verifica JWT locale, utilizzato quando l'introspezione è disabilitata, non è interessato da questo problema. Si raccomanda agli utenti di aggiornare alla versione 4.23.0, che corregge il problema. Se gli utenti si trovano sul ramo di rilascio 4.22.x, si suggerisce di aggiornare alla 4.22.2. Se gli utenti si trovano sul ramo di rilascio 4.18.x, si suggerisce di aggiornare alla 4.18.5. Le linee di rilascio 4.16.x, 4.17.x e dalla 4.19.x alla 4.21.x hanno raggiunto la fine del ciclo di vita prima che questo problema fosse risolto e non riceveranno una correzione, quindi i deployment su di esse devono passare a una release supportata. Per i deployment che non possono aggiornare immediatamente, impostare introspectionCacheEnabled=false su KeycloakSecurityPolicy, in modo che ogni richiesta venga verificata tramite l'endpoint di introspezione, che segnala un token scaduto come inattivo, al costo di una chiamata di introspezione per richiesta. Ridurre introspectionCacheTtl restringe solo la finestra e non la chiude.
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.