Apache Camel-Cometd: Inbound Bayeux message headers are mapped into the Exchange without a HeaderFilterStrategy, allowing unauthenticated clients to inject Camel control headers
Beschreibung
Sicherheitsanfälligkeit für unsachgemäße Eingabevalidierung in Apache Camel Cometd Component. Die Kamelkomet-Komponente bildet eingehende Bayeux (CometD) Nachrichten-Header in den Camel Exchange ab, ohne eine HeaderFilterStrategy anzuwenden. CometdBinding.populateExchangeFromMessage kopiert den gesamten Ext. CamelHeaders-Karte, die vom CometD-Client direkt auf die Camel-Nachricht (message.setHeaders) geliefert wird, also jeder Header-Name - einschließlich Camel-interner Kontroll-Header wie CamelHttpUri, CamelFileName oder CamelJmsDestination Name - wird unverändert akzeptiert. Da ein CometdComponent standardmäßig keine Bayeux SecurityPolicy installiert, kann jeder Client, der den Bayeux-Handshake gegen den CometD-Endpunkt abschließen kann, eine solche Nachricht ohne Authentifizierung veröffentlichen. Ein Angreifer kann daher beliebige Camel-Control-Header injizieren, die das Verhalten von nachgelagerten Produzenten in der Route beeinflussen (z. B. Umleitung eines HTTP-Produzenten, Ändern eines Dateinamens oder Überschreiben eines JMS-Ziels); die injizierten Header bleiben auch über interne Direct-, Seda- und vm-Hops bestehen. Der konkrete nachgelagerte Aufprall hängt davon ab, welche Erzeuger die Strecke nutzt. Dieses Problem betrifft Apache Camel: von 4.0.0 vor 4.14.8, von 4.15.0 vor 4.18.3, von 4.19.0 vor 4.21.0. Benutzern wird empfohlen, auf Version 4.21.0 zu aktualisieren, wodurch das Problem behoben wird. Wenn Benutzer auf dem 4.14.x LTS-Releases-Stream sind, wird empfohlen, auf 4.14.8 zu aktualisieren. Wenn Benutzer auf dem 4.18.x-Releases-Stream sind, wird empfohlen, auf 4.18.3 zu aktualisieren. Der Fix implementiert eine HeaderFilterStrategy in der Kamel-Kometd-Bindung (ein langjähriger TODO im Code), der den Camel-Header-Namespace auf Inbound-Mapping-Fall unempfindlich filtert, so dass vom Client bereitgestellte Camel* / Kamel*-Header nicht mehr in den Exchange kopiert werden. Bei Bereitstellungen, die nicht sofort aktualisiert werden können, entfernen Sie die Camel-Steuer-Header von eingehenden CometD-Nachrichten, bevor sie einen nachgelagerten Produzenten erreichen (z. B. removeHeaders('Camel*') und removeHeaders('camel*') am Anfang der Route) und installieren Sie eine explizite Bayeux-Sicherheitsrichtlinie auf der CometdComponent, so dass nur authentifizierte Clients veröffentlicht werden können.
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 4.14.8, 4.18.3, 4.21.0.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Apache Software Foundation org.apache.camel:camel-cometd.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.