CVE-2026-83531
Apache Camel: конечная точка управления Camel-Dynamic-Router компилирует выражения-предикаты, переданные в управляющих сообщениях
- Опубликовано
- 19 окт. 2026 г.
- Обновлено
- 20 окт. 2026 г.
- Назначение CNA
- apache
- Наблюдены доказательства
- 19 окт. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HНизкий · следующие 30 дней
- Процентиль
- 57,9 %
- Дата модели
- 25 окт. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
Некорректный контроль генерации кода («внедрение кода»), некорректная нейтрализация специальных элементов, используемых в операторе языка выражений («внедрение языка выражений»), — уязвимость в Apache Camel. Проблема затрагивает Apache Camel: с 4.4.0 до 4.18.5, с 4.19.0 до 4.22.1. Конечная точка dynamic-router-control, появившаяся в 4.4.0, позволяет участникам маршрутизации управлять подписками Dynamic Router путём отправки управляющих сообщений. При обработке запроса на подписку или обновление DynamicRouterControlProducer брал предикат подписки и имя языка, использованного для его компиляции, из входящего сообщения — либо из полей predicate и expressionLanguage тела DynamicRouterControlMessage, либо из заголовков CamelDynamicRouterPredicate и CamelDynamicRouterExpressionLanguage. Затем DynamicRouterControlService разрешал этот язык из CamelContext и компилировал выражение в Predicate без списка разрешённых языков и без явного согласия. Скомпилированный предикат добавлялся в базу правил канала и вычислялся для каждого exchange, маршрутизируемого через соответствующую конечную точку dynamic-router, пока существовала подписка. Таким образом, маршрут, пересылающий сообщения из внешнего транспорта в управляющую конечную точку, как показано в документации компонента для участников маршрутизации в других JVM или приложениях, позволял любому субъекту, способному отправить сообщение по этому транспорту, предоставить выражение по своему выбору, которое вычислялось с привилегиями процесса Camel. Можно было выбрать любой язык выражений, доступный в classpath, включая simple language, который присутствует всегда и был языком по умолчанию на пути через заголовки, поэтому удаление необязательных языков выражений из classpath не предотвращало проблему. Эксплуатация требует возможности отправить сообщение по транспорту, маршрут которого пересылает его в конечную точку dynamic-router-control; никакой другой аутентификации или взаимодействия с пользователем не требуется. Выпуски до 4.4.0 не затронуты, поскольку их управляющий канал брал выражения предикатов только из URI конечной точки, настроенного автором маршрута. Пользователям рекомендуется обновиться до версии 4.23.0, в которой проблема исправлена. Если пользователи находятся на ветке выпусков 4.22.x, им рекомендуется обновиться до 4.22.1. Если пользователи находятся на ветке выпусков 4.18.x, им рекомендуется обновиться до 4.18.5. Ветка выпусков 4.14.x и более ранние достигли окончания срока поддержки до того, как эта проблема была устранена, и исправление для них не будет выпущено, поэтому развёртывания на этих линиях должны перейти на поддерживаемый выпуск. После обновления управляющее сообщение, содержащее выражение предиката или язык выражений, отклоняется, если на конечной точке dynamic-router-control не включена новая опция allowPredicateFromMessage; включайте её только тогда, когда все отправители управляющих сообщений являются доверенными. Для развёртываний, которые не могут обновиться немедленно, не пересылайте сообщения из недоверенных или общих транспортов в конечную точку dynamic-router-control. Если управляющие сообщения должны проходить через такой транспорт, аутентифицируйте отправителя и убедитесь, что предикат и язык выражений каждой подписки задаются маршрутом, а не берутся из входящего сообщения, например, удалив заголовки CamelDynamicRouterPredicate и CamelDynamicRouterExpressionLanguage и очистив поля predicate и expressionLanguage объекта DynamicRouterControlMessage до того, как он достигнет конечной точки. Удаление необязательных языков выражений из classpath не является достаточным обходным решением. В качестве эшелонированной защиты ограничьте круг лиц, которые могут отправлять сообщения в транспорты, питающие управляющую конечную точку, а в версиях 4.23.0 и 4.22.1 задайте опцию allowedSchemes конечной точки dynamic-router, чтобы ограничить, какие конечные точки может указывать destinationUri подписки.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.