CVE-2026-83531
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Niewłaściwa kontrola generowania kodu („Wstrzykiwanie kodu”), Niewłaściwa neutralizacja elementów specjalnych używanych w luce w instrukcji języka wyrażeń („Wstrzykiwanie języka wyrażeń”) w Apache Camel.
Ten problem dotyczy Apache Camel: od 4.4.0 przed 4.18.5, od 4.19.0 przed 4.22.1.
Punkt końcowy dynamicznej kontroli routera, wprowadzony w wersji 4.4.0, umożliwia uczestnikom routingu zarządzanie subskrypcjami routera dynamicznego poprzez wysyłanie komunikatów kontrolnych. Kiedy obsługiwał żądanie subskrypcji lub aktualizacji, DynamicRouterControlProducer pobierał predykat subskrypcji i nazwę języka użytego do kompilacji z wiadomości przychodzącej albo z pól predykatu i expressLanguage treści DynamicRouterControlMessage, albo z nagłówków CamelDynamicRouterPredicate i CamelDynamicRouterExpressionLanguage. Następnie usługa DynamicRouterControlService rozwiązała ten język z CamelContext i skompilowała wyrażenie w predykat, bez listy dozwolonych i bez zgody. Skompilowany predykat został dodany do bazy reguł kanału i oceniony w odniesieniu do każdej wymiany kierowanej przez odpowiedni punkt końcowy routera dynamicznego przez cały okres istnienia subskrypcji. Trasa, która przekazuje komunikaty z transportu zewnętrznego do kontrolnego punktu końcowego, jak pokazano w dokumentacji komponentu dla uczestników routingu w innych maszynach JVM lub aplikacjach, pozwala zatem każdemu aktorowi, który może wysłać komunikat w tym transporcie, dostarczyć wybrane przez siebie wyrażenie, które zostało ocenione z uprawnieniami procesu Camel. Można było wybrać dowolny język wyrażeń dostępny w ścieżce klas, w tym język prosty, który jest zawsze obecny i był domyślny w ścieżce nagłówka, więc usunięcie opcjonalnych języków wyrażeń ze ścieżki klas nie zapobiegło problemowi. Eksploatacja wymaga możliwości wysłania komunikatu w transporcie, którego trasa przekazuje go do punktu końcowego z dynamiczną kontrolą routera; nie jest potrzebne żadne inne uwierzytelnianie ani interakcja użytkownika. Nie ma to wpływu na wersje wcześniejsze niż 4.4.0, ponieważ ich kanał kontrolny pobierał wyrażenia predykatów tylko z identyfikatora URI punktu końcowego skonfigurowanego przez autora trasy.
Użytkownikom zaleca się aktualizację do wersji 4.23.0, która rozwiązuje problem. Jeśli użytkownicy korzystają ze strumienia wydań 4.22.x, sugeruje się im aktualizację do wersji 4.22.1. Jeśli użytkownicy korzystają ze strumienia wydań 4.18.x, sugeruje się im aktualizację do wersji 4.18.5. Strumień wersji 4.14.x dobiegł końca, zanim problem został rozwiązany i nie otrzymał poprawki, więc wdrożenia na tych liniach muszą zostać przeniesione do obsługiwanej wersji. Po aktualizacji komunikat kontrolny zawierający wyrażenie predykatu lub język wyrażeń jest odrzucany, chyba że w punkcie końcowym kontroli routera dynamicznego zostanie włączona nowa opcja zezwoleniaPredicateFromMessage; włącz ją tylko wtedy, gdy każdy nadawca wiadomości kontrolnych jest zaufany. W przypadku wdrożeń, których nie można uaktualnić natychmiast, nie przesyłaj dalej komunikatów z niezaufanych lub współdzielonych transportów do punktu końcowego z dynamiczną kontrolą routera. Tam, gdzie komunikaty kontrolne muszą przejść przez taki transport, uwierzytelnij nadawcę i upewnij się, że predykat i język wyrażeń każdej subskrypcji są ustawione na trasie, a nie pobrane z komunikatu przychodzącego, na przykład usuwając nagłówki CamelDynamicRouterPredicate i CamelDynamicRouterExpressionLanguage oraz czyszcząc pola predykatu i expressLanguage komunikatu DynamicRouterControlMessage, zanim dotrze on do punktu końcowego. Usunięcie opcjonalnych języków wyrażeń ze ścieżki klas nie jest wystarczającym obejściem. W ramach dogłębnej obrony ogranicz, kto może wysyłać do transportów zasilających kontrolny punkt końcowy, a w wersjach 4.23.0 i 4.22.1 ustaw opcję validSchemes punktu końcowego routera dynamicznego, aby ograniczyć punkty końcowe, które może nazywać docelowy identyfikator Uri subskrypcji.
>_ Słabości (CWE)
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org