CVE-2026-83531
Apache Camel: l'endpoint di controllo di Camel-Dynamic-Router compila espressioni di predicato fornite dai messaggi di controllo
- Pubblicato
- 19 ott 2026
- Aggiornato
- 20 ott 2026
- Assegnazione CNA
- apache
- Evidenza osservata
- 19 ott 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBasso · prossimi 30 giorni
- Percentile
- 58,0%
- Data del modello
- 27 ott 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Controllo improprio della generazione di codice ('Code Injection'), vulnerabilità di neutralizzazione impropria di elementi speciali utilizzati in un'istruzione di Expression Language ('Expression Language Injection') in Apache Camel. Questo problema interessa Apache Camel: dalla 4.4.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1. L'endpoint dynamic-router-control, introdotto nella 4.4.0, consente ai partecipanti al routing di gestire le sottoscrizioni Dynamic Router inviando messaggi di controllo. Quando gestiva una richiesta di sottoscrizione o di aggiornamento, DynamicRouterControlProducer prendeva il predicato della sottoscrizione e il nome del linguaggio usato per compilarlo dal messaggio in ingresso, ovvero dai campi predicate ed expressionLanguage di un corpo DynamicRouterControlMessage oppure dagli header CamelDynamicRouterPredicate e CamelDynamicRouterExpressionLanguage. DynamicRouterControlService risolveva quindi quel linguaggio dal CamelContext e compilava l'espressione in un Predicate, senza alcuna allow-list e senza opt-in. Il predicato compilato veniva aggiunto alla base di regole del canale e valutato su ogni exchange instradato attraverso il corrispondente endpoint dynamic-router per tutta la durata della sottoscrizione. Una route che inoltra messaggi da un trasporto esterno all'endpoint di controllo, come mostrato nella documentazione del componente per i partecipanti al routing in altre JVM o applicazioni, consentiva quindi a qualsiasi attore in grado di inviare un messaggio su quel trasporto di fornire un'espressione a propria scelta, che veniva valutata con i privilegi del processo Camel. Era possibile selezionare qualsiasi expression language disponibile nel classpath, incluso il simple language, che è sempre presente ed era il valore predefinito nel percorso degli header, pertanto la rimozione degli expression language opzionali dal classpath non impediva il problema. Lo sfruttamento richiede la capacità di inviare un messaggio su un trasporto la cui route lo inoltra a un endpoint dynamic-router-control; non è necessaria alcuna altra autenticazione o interazione dell'utente. Le release precedenti alla 4.4.0 non sono interessate, perché il loro canale di controllo prendeva le espressioni dei predicati solo dall'URI dell'endpoint configurato dall'autore della route. Si raccomanda agli utenti di aggiornare alla versione 4.23.0, che corregge il problema. Se gli utenti sono sul ramo di release 4.22.x, si suggerisce di aggiornare alla 4.22.1. Se gli utenti sono sul ramo di release 4.18.x, si suggerisce di aggiornare alla 4.18.5. Il ramo di release 4.14.x e precedenti ha raggiunto l'end of life prima che questo problema fosse risolto e non riceverà una correzione, pertanto i deployment su tali linee devono passare a una release supportata. Dopo l'aggiornamento, un messaggio di controllo che trasporta un'espressione di predicato o un expression language viene rifiutato a meno che la nuova opzione allowPredicateFromMessage non sia abilitata sull'endpoint dynamic-router-control; abilitarla solo quando ogni mittente dei messaggi di controllo è attendibile. Per i deployment che non possono aggiornare immediatamente, non inoltrare messaggi da trasporti non attendibili o condivisi a un endpoint dynamic-router-control. Laddove i messaggi di controllo devono attraversare tale trasporto, autenticare il mittente e assicurarsi che il predicato e l'expression language di ciascuna sottoscrizione siano impostati dalla route anziché presi dal messaggio in ingresso, ad esempio rimuovendo gli header CamelDynamicRouterPredicate e CamelDynamicRouterExpressionLanguage e cancellando i campi predicate ed expressionLanguage di un DynamicRouterControlMessage prima che raggiunga l'endpoint. La rimozione degli expression language opzionali dal classpath non è una mitigazione sufficiente. Come difesa in profondità, limitare chi può inviare ai trasporti che alimentano l'endpoint di controllo e, sulla 4.23.0 e sulla 4.22.1, impostare l'opzione allowedSchemes dell'endpoint dynamic-router per limitare quali endpoint può nominare il destinationUri di una sottoscrizione.
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.