CVE-2026-83531
Apache Camel: Camel-Dynamic-Router-Control-Endpoint kompiliert durch Steuerungsnachrichten übermittelte Prädikatsausdrücke
- Veröffentlicht
- 19.10.2026
- Aktualisiert
- 20.10.2026
- CNA zuweisen
- apache
- Beweise beobachtet
- 19.10.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HNiedrig · nächste 30 Tage
- Perzentil
- 57,9 %
- Modelldatum
- 25.10.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Unsachgemäße Kontrolle der Codegenerierung („Code Injection“), unsachgemäße Neutralisierung spezieller Elemente, die in einer Expression-Language-Anweisung verwendet werden („Expression Language Injection“) – Schwachstelle in Apache Camel. Dieses Problem betrifft Apache Camel: von 4.4.0 bis vor 4.18.5, von 4.19.0 bis vor 4.22.1. Der in 4.4.0 eingeführte Endpunkt dynamic-router-control ermöglicht es Routing-Teilnehmern, Dynamic-Router-Abonnements durch das Senden von Steuernachrichten zu verwalten. Bei der Verarbeitung einer Subscribe- oder Update-Anfrage übernahm der DynamicRouterControlProducer das Subscription-Prädikat und den Namen der zu seiner Kompilierung verwendeten Sprache aus der eingehenden Nachricht, entweder aus den Feldern predicate und expressionLanguage eines DynamicRouterControlMessage-Bodys oder aus den Headern CamelDynamicRouterPredicate und CamelDynamicRouterExpressionLanguage. Der DynamicRouterControlService löste diese Sprache anschließend aus dem CamelContext auf und kompilierte den Ausdruck zu einem Predicate – ohne Allow-List und ohne Opt-in. Das kompilierte Prädikat wurde der Regelbasis des Kanals hinzugefügt und gegen jeden Exchange ausgewertet, der über den entsprechenden dynamic-router-Endpunkt geleitet wurde, solange das Abonnement bestand. Eine Route, die Nachrichten von einem externen Transport an den Steuerendpunkt weiterleitet – wie in der Komponentendokumentation für Routing-Teilnehmer in anderen JVMs oder Anwendungen dargestellt –, ermöglichte es daher jedem Akteur, der eine Nachricht auf diesem Transport senden konnte, einen Ausdruck seiner Wahl bereitzustellen, der mit den Privilegien des Camel-Prozesses ausgewertet wurde. Jede im Classpath verfügbare Expression Language konnte ausgewählt werden, einschließlich der simple Language, die stets vorhanden ist und auf dem Header-Pfad die Standardeinstellung war, sodass das Entfernen optionaler Expression Languages aus dem Classpath das Problem nicht verhinderte. Die Ausnutzung erfordert die Fähigkeit, eine Nachricht auf einem Transport zu senden, dessen Route sie an einen dynamic-router-control-Endpunkt weiterleitet; es ist keine weitere Authentifizierung oder Benutzerinteraktion erforderlich. Releases vor 4.4.0 sind nicht betroffen, da ihr Steuerkanal Prädikat-Ausdrücke nur aus dem vom Routenautor konfigurierten Endpunkt-URI übernahm. Benutzern wird empfohlen, auf Version 4.23.0 zu aktualisieren, die das Problem behebt. Befinden sich Benutzer im Release-Stream 4.22.x, wird ihnen empfohlen, auf 4.22.1 zu aktualisieren. Befinden sich Benutzer im Release-Stream 4.18.x, wird ihnen empfohlen, auf 4.18.5 zu aktualisieren. Der Release-Stream 4.14.x und frühere haben ihr End-of-Life erreicht, bevor dieses Problem behoben wurde, und erhalten keinen Fix, sodass Bereitstellungen auf diesen Linien auf ein unterstütztes Release wechseln müssen. Nach dem Upgrade wird eine Steuernachricht, die einen Prädikat-Ausdruck oder eine Expression Language enthält, abgelehnt, es sei denn, die neue Option allowPredicateFromMessage ist am dynamic-router-control-Endpunkt aktiviert; aktivieren Sie diese nur, wenn jeder Absender von Steuernachrichten vertrauenswürdig ist. Für Bereitstellungen, die nicht sofort aktualisiert werden können, leiten Sie keine Nachrichten von nicht vertrauenswürdigen oder gemeinsam genutzten Transporten an einen dynamic-router-control-Endpunkt weiter. Wo Steuernachrichten einen solchen Transport überqueren müssen, authentifizieren Sie den Absender und stellen Sie sicher, dass das Prädikat und die Expression Language jedes Abonnements von der Route festgelegt und nicht aus der eingehenden Nachricht übernommen werden, indem Sie beispielsweise die Header CamelDynamicRouterPredicate und CamelDynamicRouterExpressionLanguage entfernen und die Felder predicate und expressionLanguage eines DynamicRouterControlMessage leeren, bevor er den Endpunkt erreicht. Das Entfernen optionaler Expression Languages aus dem Classpath ist kein ausreichender Workaround. Als Defense in Depth beschränken Sie, wer an die Transporte senden kann, die den Steuerendpunkt speisen, und setzen Sie in 4.23.0 und 4.22.1 die Option allowedSchemes des dynamic-router-Endpunkts, um einzuschränken, welche Endpunkte die destinationUri eines Abonnements benennen darf.
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.