Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-83531 — Proof-of-concept eseguibile in Spring Boot per CVE-2026-83531, che dimostra l'iniezione di espressioni nel endpoint dynamic-router-control di Apache Camel e verifica la correzione. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-83531
Strumenti DifensiviAnalisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHuboscerd/cve-2026-83531

CVE-2026-83531

Proof-of-concept eseguibile in Spring Boot per CVE-2026-83531, che dimostra l'iniezione di espressioni nel endpoint dynamic-router-control di Apache Camel e verifica la correzione.

Vedi Repository
31 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-83531 — camel-dynamic-router: injection nell'expression language dell'endpoint di controllo

Reproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui l'endpoint dynamic-router-control prendeva il predicato di sottoscrizione e il nome del linguaggio usato per compilarlo dal messaggio in arrivo (i campi predicate / expressionLanguage di un DynamicRouterControlMessage, oppure gli header CamelDynamicRouterPredicate / CamelDynamicRouterExpressionLanguage). Il servizio risolveva poi quel linguaggio dal CamelContext e compilava l'espressione in un Predicate, senza alcuna allow-list e senza opt-in. Il predicato compilato veniva valutato su ogni exchange instradato attraverso il canale — quindi qualsiasi attore in grado di inviare un messaggio su un trasporto la cui route lo inoltra a un endpoint di controllo poteva fornire un'espressione di propria scelta, valutata con i privilegi del processo Camel. Qualsiasi linguaggio presente nel classpath poteva essere selezionato, incluso simple, che è sempre presente ed era il valore predefinito.

Solo Camel Spring Boot. Non esiste un'estensione camel-quarkus-dynamic-router, quindi questo reproduttore non può essere eseguito su Camel Quarkus.

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-dynamic-router 4.22.0 (affetto; corretto in 4.22.1)

Cosa dimostra

L'app configura un canale Dynamic Router test (direct:start → dynamic-router://test). L'attaccante invia un messaggio di controllo subscribe contenente un'espressione di predicato e un linguaggio scelti dall'attaccante:

CamelDynamicRouterPredicate          = ${bean:detonator?method=detonate}
CamelDynamicRouterExpressionLanguage = simple

Poi un messaggio viene instradato attraverso il canale, che valuta il predicato di sottoscrizione. Nella build affetta l'espressione viene eseguita, invocando detonator.detonate() — un sostituto innocuo per qualsiasi metodo del registro senza argomenti che un attaccante potrebbe raggiungere (e qualsiasi linguaggio, ad esempio Groovy, consente codice arbitrario). Nella build corretta l'endpoint di controllo rifiuta di prendere il predicato/linguaggio dal messaggio.

cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Output atteso sulla build interessata:

Subscription accepted.
>>> PROVEN: the attacker-supplied predicate expression was compiled and evaluated, invoking
>>> detonator.detonate() with the privileges of the Camel process ...

Con la build corretta la sottoscrizione viene rifiutata con IllegalArgumentException: The subscription predicate expression, and the language used to compile it, cannot be taken from a control message. ... set 'allowPredicateFromMessage=true' ....

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-dynamic-router (endpoint dynamic-router-control)
CWECWE-94 (Code Injection), CWE-917 (Expression Language Injection)
GravitàALTA
Vettore di attaccoUn messaggio di controllo (subscribe/update) che fornisce un'espressione predicato e un linguaggio, su un trasporto la cui route lo inoltra a un endpoint dynamic-router-control
ImpattoValutazione di un'espressione scelta dall'attaccante (qualsiasi linguaggio nel classpath) con i privilegi del processo Camel — esecuzione di codice
Versioni interessateDalla 4.4.0 precedenti alla 4.18.5, dalla 4.19.0 precedenti alla 4.22.1
Versioni corrette4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24576
CreditoLeon Zlobecki

Advisory: https://camel.apache.org/security/CVE-2026-83531.html

La correzione

L'espressione predicato e il suo linguaggio non vengono più presi dal messaggio di controllo per impostazione predefinita: un messaggio di controllo che li fornisce viene rifiutato a meno che l'autore della route non effettui esplicitamente l'opt-in con allowPredicateFromMessage=true sull' endpoint dynamic-router-control. Il percorso previsto consiste nel configurare predicate e expressionLanguage sull' URI dell'endpoint (controllato dall'autore della route), come facevano le release precedenti alla 4.4.0.

Mitigazione se non è possibile aggiornare

Non inoltrare messaggi di origine esterna a un endpoint dynamic-router-control; gestire le sottoscrizioni solo da endpoint controllati dall'autore della route e limitare i trasporti che possono raggiungere il canale di controllo.

Disclaimer

Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se ne sono affetti e confermare che l'aggiornamento la risolve. Il payload è un benigno marker bean. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.

Scarica lo strumento