CVE-2026-83531
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 55 - wyżej niż 55% wszystkich znanych CVE
Streszczenie
Podatność typu Code Injection i Expression Language Injection w Apache Camel (wersje 4.4.0–4.18.4, 4.19.0–4.22.0) dotyczy endpointu dynamic-router-control. Producent DynamicRouterControlProducer przyjmował predykat i nazwę języka wyrażeń z przychodzącej wiadomości (pola body lub nagłówki CamelDynamicRouterPredicate i CamelDynamicRouterExpressionLanguage), a następnie kompilował je bez allow-listy i bez opt-in. Umożliwiało to wykonanie dowolnego wyrażenia z uprawnieniami procesu Camel.
Ocena ryzyka
Atakujący mogący wysłać wiadomość na transport przekierowujący do endpointu dynamic-router-control może wstrzyknąć własne wyrażenie i uzyskać wykonanie kodu w kontekście aplikacji Camel. Nie wymaga to uwierzytelnienia ani interakcji użytkownika, co stwarza wysokie ryzyko przejęcia procesu.
Rekomendacja
Zaktualizuj Apache Camel do wersji 4.23.0, 4.22.1 lub 4.18.5 (linie 4.14.x i starsze są EOL i wymagają migracji). Jeśli aktualizacja nie jest natychmiast możliwa, nie przekierowuj wiadomości z niezaufanych transportów do dynamic-router-control, usuwaj nagłówki CamelDynamicRouterPredicate i CamelDynamicRouterExpressionLanguage oraz czyść pola predykatu i języka w DynamicRouterControlMessage.
Inne podatności w Apache Camel
Zobacz wszystkie- CVE-2015-5348Wysokie
Apache Camel w wersjach od 2.6.x do 2.14.x, 2.15.x przed 2.15.5 oraz 2.16.x przed 2.16.1, przy użyciu camel-jetty lub camel-servlet jako konsumentów w trasach Camel, umożliwia zdalnym atakującym wykonanie dowolnych poleceń za pomocą spreparowanego zserializowanego obiektu Java w żądaniu HTTP.
- CVE-2014-0002Wysokie
Komponent XSLT w Apache Camel przed wersją 2.11.4 oraz 2.12.x przed wersją 2.12.3 umożliwia zdalnym atakującym odczyt dowolnych plików oraz potencjalnie inne nieokreślone skutki poprzez dokument XML zawierający deklarację zewnętrznego bytu w połączeniu z odniesieniem do bytu, co jest związane z problemem XML External Entity (XXE).
- CVE-2026-78162Krytyczne
Podatność deserializacji niezaufanych danych w Apache Camel dotyczy komponentu camel-hazelcast. Dwie ścieżki konfiguracji (ReplicatedHazelcastAggregationRepository oraz tryb klienta w HazelcastDefaultComponent) nie stosują filtra JavaSerializationFilterConfig, co pozwala atakującemu na zdalne wykonanie kodu poprzez wstrzyknięcie złośliwego obiektu Java do klastra Hazelcast.
- CVE-2026-71300Krytyczne
Podatność w Apache Camel Atmosphere Websocket component wynika z nieprawidłowej walidacji nagłówków Exchange, które nie należą do przestrzeni nazw Camel (websocket.connectionKey, websocket.connectionKey.list, websocket.sendToAll, websocket.eventType, websocket.errorType). Zewnętrzny atakujący może dostarczyć nagłówek listy przez HTTP i przejąć decyzję o routingu wiadomości do WebSocket, co może prowadzić do pominięcia lub przekierowania powiadomień do innego klienta.
- CVE-2026-66906Krytyczne
Podatność typu Relative Path Traversal w komponencie Apache Camel Azure Storage Blob umożliwia zapis pliku poza skonfigurowanym katalogiem podczas operacji downloadBlobToFile. Nazwa blobu z segmentami katalogu nadrzędnego nie jest normalizowana, co pozwala na nadpisanie dowolnego pliku w systemie plików z uprawnieniami procesu Camel.
- CVE-2026-56140Krytyczne
W komponencie Apache Camel AWS SNS wykryto brak filtra dla nagłówków przychodzących w strategii Sns2HeaderFilterStrategy. Podatność nie jest jednak osiągalna, ponieważ komponent jest wyłącznie produkcyjny (nie obsługuje konsumentów), więc atakujący nie może dostarczyć zewnętrznych atrybutów wiadomości do Camel Exchange. Mimo to dodano filtr defensywny dla spójności z innymi strategiami.
- CVE-2026-53913Krytyczne
W komponencie camel-keycloak Apache Camel wykryto podatność polegającą na pomijaniu weryfikacji tokena dostępu w domyślnej konfiguracji. Gdy wymagane role lub uprawnienia są puste, token nie jest weryfikowany kryptograficznie, co pozwala na dostęp do chronionych tras z dowolnym nagłówkiem Authorization.
- CVE-2026-48205Krytyczne
Podatność w komponencie DNS Apache Camel umożliwia atak SSRF poprzez nieprawidłową walidację nagłówków wiadomości. Atakujący może ustawić nagłówki dns.server, dns.name i dns.domain w żądaniu HTTP, co prowadzi do przekierowania zapytań DNS na kontrolowany serwer i ujawnienia wewnętrznych nazw hostów.
- CVE-2026-48204Krytyczne
Podatność w Apache Camel w komponencie mongodb-gridfs pozwala atakującemu na manipulację operacjami GridFS poprzez nagłówki HTTP. Brak walidacji wejścia i kontroli dostępu umożliwia nieautoryzowane usuwanie, odczyt lub wyliczanie plików oraz wstrzykiwanie operatorów NoSQL.
- CVE-2026-48203Krytyczne
Podatność w komponencie Apache Camel Solr umożliwia ataki typu SSRF oraz wstrzykiwanie parametrów i pól do zapytań Solr. Nagłówki Exchange z prefiksami SolrParam. i SolrField. są przekazywane bez filtrowania z żądań HTTP do producenta Solr, co pozwala atakującemu na manipulację zapytaniami i dokumentami indeksowanymi.
Oryginalny opis (angielski, źródło NVD)
Improper Control of Generation of Code ('Code Injection'), Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection') vulnerability in Apache Camel. This issue affects Apache Camel: from 4.4.0 before 4.18.5, from 4.19.0 before 4.22.1. The dynamic-router-control endpoint, introduced in 4.4.0, lets routing participants manage Dynamic Router subscriptions by sending control messages. When it handled a subscribe or update request, DynamicRouterControlProducer took the subscription predicate and the name of the language used to compile it from the incoming message, either from the predicate and expressionLanguage fields of a DynamicRouterControlMessage body or from the CamelDynamicRouterPredicate and CamelDynamicRouterExpressionLanguage headers. DynamicRouterControlService then resolved that language from the CamelContext and compiled the expression into a Predicate, with no allow-list and no opt-in. The compiled predicate was added to the channel's rule base and evaluated against every exchange routed through the corresponding dynamic-router endpoint for as long as the subscription existed. A route that forwards messages from an external transport to the control endpoint, as shown in the component documentation for routing participants in other JVMs or applications, therefore let any actor able to send a message on that transport supply an expression of their choosing, which was evaluated with the privileges of the Camel process. Any expression language available on the classpath could be selected, including the simple language, which is always present and was the default on the header path, so removing optional expression languages from the classpath did not prevent the issue. Exploitation requires the ability to send a message on a transport whose route forwards it to a dynamic-router-control endpoint; no other authentication or user interaction is needed. Releases before 4.4.0 are not affected, because their control channel took predicate expressions only from the endpoint URI configured by the route author. Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.1. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.5. The 4.14.x releases stream and earlier reached end of life before this issue was resolved and will not receive a fix, so deployments on those lines must move to a supported release. After upgrading, a control message that carries a predicate expression or an expression language is rejected unless the new allowPredicateFromMessage option is enabled on the dynamic-router-control endpoint; enable it only when every sender of control messages is trusted. For deployments that cannot upgrade immediately, do not forward messages from untrusted or shared transports to a dynamic-router-control endpoint. Where control messages must cross such a transport, authenticate the sender and make sure the predicate and expression language of each subscription are set by the route rather than taken from the incoming message, for example by removing the CamelDynamicRouterPredicate and CamelDynamicRouterExpressionLanguage headers and clearing the predicate and expressionLanguage fields of a DynamicRouterControlMessage before it reaches the endpoint. Removing optional expression languages from the classpath is not a sufficient workaround. As defence in depth, restrict who can send to the transports that feed the control endpoint, and on 4.23.0 and 4.22.1 set the allowedSchemes option of the dynamic-router endpoint to limit which endpoints a subscription's destinationUri may name.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

