Podatność w komponencie Apache Camel Cometd (camel-cometd) umożliwia nieuwierzytelnionemu atakującemu wstrzykiwanie dowolnych wewnętrznych nagłówków sterujących Camel do przetwarzanego komunikatu. Jest to krytyczna luka, ponieważ nie wymaga żadnego uwierzytelnienia ani interakcji użytkownika, a jej wykorzystanie może prowadzić do przejęcia kontroli nad zachowaniem tras przetwarzania danych.
▸ Pokaż oryginał (EN)
Improper Input Validation vulnerability in Apache Camel Cometd Component. The camel-cometd component maps inbound Bayeux (CometD) message headers into the Camel Exchange without applying a HeaderFilterStrategy. CometdBinding.populateExchangeFromMessage copies the entire ext.CamelHeaders map supplied by the CometD client directly onto the Camel message (message.setHeaders), so any header name - including Camel-internal control headers such as CamelHttpUri, CamelFileName or CamelJmsDestinationName - is accepted unmodified. Because a CometdComponent installs no Bayeux SecurityPolicy by default, any client that can complete the Bayeux handshake against the CometD endpoint can publish such a message without authentication. An attacker can therefore inject arbitrary Camel control headers that influence the behaviour of downstream producers in the route (for example redirecting an HTTP producer, changing a file name, or overriding a JMS destination); the injected headers also persist across internal direct, seda and vm hops. The concrete downstream impact depends on which producers the route uses. This issue affects Apache Camel: from 4.0.0 before 4.14.8, from 4.15.0 before 4.18.3, from 4.19.0 before 4.21.0. Users are recommended to upgrade to version 4.21.0, which fixes the issue. If users are on the 4.14.x LTS releases stream, then they are suggested to upgrade to 4.14.8. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.3. The fix implements a HeaderFilterStrategy in the camel-cometd binding (a long-standing TODO in the code) that filters the Camel header namespace case-insensitively on inbound mapping, so client-supplied Camel* / camel* headers are no longer copied into the Exchange. For deployments that cannot upgrade immediately, strip the Camel control headers from inbound CometD messages before they reach any downstream producer (for example removeHeaders('Camel*') and removeHeaders('camel*') at the start of the route), and install an explicit Bayeux SecurityPolicy on the CometdComponent so that only authenticated clients can publish.
Komponent camel-cometd kopiuje całą mapę nagłówków ext.CamelHeaders z komunikatu protokołu Bayeux (CometD) bezpośrednio do nagłówków wiadomości Camel Exchange (przez metodę message.setHeaders), bez stosowania jakiejkolwiek strategii filtrowania nagłówków (HeaderFilterStrategy). Domyślnie CometdComponent nie instaluje żadnej polityki bezpieczeństwa Bayeux (SecurityPolicy), co oznacza, że każdy klient zdolny do ukończenia handshake'u Bayeux może publikować takie komunikaty bez uwierzytelnienia. Atakujący może tym sposobem wstrzykiwać wewnętrzne nagłówki sterujące Camel, takie jak CamelHttpUri, CamelFileName czy CamelJmsDestinationName, które następnie wpływają na zachowanie kolejnych producentów w trasie i propagują się przez wewnętrzne przeskoki (direct, seda, vm).
Atakujący może manipulować zachowaniem tras Camel — przykładowo przekierowywać żądania HTTP, zmieniać nazwy plików lub nadpisywać docelowe kolejki JMS — co w zależności od konfiguracji trasy może prowadzić do naruszenia poufności, integralności lub dostępności przetwarzanych danych.
Zaleca się aktualizację do wersji 4.21.0 (lub 4.14.8 dla gałęzi LTS 4.14.x, albo 4.18.3 dla gałęzi 4.18.x). Fix implementuje HeaderFilterStrategy w wiązaniu camel-cometd, która filtruje przestrzeń nazw nagłówków Camel case-insensitively, uniemożliwiając klientom wstrzykiwanie nagłówków Camel*/camel*. Dla wdrożeń, których nie można natychmiast zaktualizować, zaleca się: (1) usunięcie nagłówków kontrolnych na początku trasy (removeHeaders('Camel*') oraz removeHeaders('camel*')), (2) zainstalowanie jawnej polityki Bayeux SecurityPolicy na CometdComponent, aby tylko uwierzytelnieni klienci mogli publikować komunikaty.
Apache Camel w wersjach od 4.0.0 przed 4.14.8, od 4.15.0 przed 4.18.3 oraz od 4.19.0 przed 4.21.0 — wyłącznie wdrożenia wykorzystujące komponent camel-cometd.
Poprawka realizuje długo planowaną zmianę (oznaczoną jako TODO w kodzie źródłowym) polegającą na dodaniu HeaderFilterStrategy do komponentu camel-cometd.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HApache Camel
APPApache4.0.0 – 4.14.8 (bez)4.15.0 – 4.18.3 (bez)4.19.0 – 4.21.0 (bez)
Powiązane podatności
Improper input validation vulnerability in Apache Camel Undertow component. This issue affects Apache Camel...
Improper input validation vulnerability in Apache Camel Atmosphere Websocket component. This issue affects ...
Relative path traversal vulnerability in Apache Camel Azure Storage Blob component. This issue affects Apac...
Apache Camel Docling — argument injection i path traversal w CLI
Apache Camel Keycloak: brak weryfikacji wygaśnięcia tokenu dostępu