CVE-2026-43866
Apache Camel, Apache Camel: Camel JMS — обход исправления CVE-2026-40860 через DefaultExchangeHolder
- Опубликовано
- 6 июл. 2026 г.
- Обновлено
- 6 июл. 2026 г.
- Назначение CNA
- apache
- Наблюдены доказательства
- 6 авг. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:LНизкий · следующие 30 дней
- Процентиль
- 49,5 %
- Дата модели
- 21 сент. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
Десериализация недоверенных данных в Apache Camel, компоненте Apache Camel JMS. Метод JmsBinding.extractBodyFromJms() в camel-jms — а также эквивалентный JmsBinding в camel-sjms — десериализует полезную нагрузку входящего JMS ObjectMessage через jakarta.jms.ObjectMessage.getObject() всякий раз, когда включена опция mapJmsMessage (по умолчанию) и Camel выступает в роли JMS-потребителя. Ужесточение CVE-2026-40860 добавило пост-десериализационную проверку классов, которая отклоняет классы за пределами списка разрешённых по умолчанию java.**;javax.**;org.apache.camel.**;!*. Однако сам org.apache.camel.support.DefaultExchangeHolder находится в разрешённом пространстве имён org.apache.camel.**, поэтому ObjectMessage, чей объект верхнего уровня является DefaultExchangeHolder, проходит проверку. Принимающая сторона затем вызывает для него DefaultExchangeHolder.unmarshal() без необходимости включения опции transferExchange — асимметричная граница доверия, поскольку отправляющая сторона ограничивает обработку ObjectMessage и transferExchange, а принимающая — нет — записывая каждое ненулевое поле держателя в Exchange: тело сообщения, заголовки IN и OUT, свойства обмена, переменные, идентификатор обмена и исключение. Злоумышленник, способный опубликовать ObjectMessage в очередь или тему, потребляемую затронутым приложением Camel, может таким образом внедрить произвольное состояние Exchange, используя только общедоступные доверенные типы java.lang и java.util, без необходимости цепочки гаджетов десериализации, чтобы манипулировать маршрутизацией и заголовками, свойствами обмена и обработкой ошибок. Та же обработка применяется к camel-sjms и camel-sjms2, а также к компонентам семейства JMS, построенным на JmsComponent и JmsBinding: camel-amqp, camel-activemq и camel-activemq6. Это обход исправления CVE-2026-40860, а не его недостаток. Проблема затрагивает Apache Camel: с 3.0.0 до 4.14.8, с 4.15.0 до 4.18.3, с 4.19.0 до 4.21.0; Apache Camel: с 3.0.0 до 4.14.8, с 4.15.0 до 4.18.3, с 4.19.0 до 4.21.0. Пользователям рекомендуется обновиться до версии 4.21.0, которая устраняет проблему. Если пользователи находятся на потоке выпусков LTS 4.14.x, им рекомендуется обновиться до 4.14.8. Если пользователи находятся на потоке выпусков 4.18.x, им рекомендуется обновиться до 4.18.3. После обновления обработка JMS ObjectMessage отключена по умолчанию в camel-jms, camel-sjms и компонентах семейства JMS (новая опция objectMessageEnabled по умолчанию имеет значение false на уровне компонента и конечной точки), поэтому входящий ObjectMessage — включая полезную нагрузку DefaultExchangeHolder — больше не десериализуется, если опция явно не включена; устанавливайте objectMessageEnabled=true только в том случае, если потребляемый JMS-адресат питается исключительно доверенными производителями. Для развёртываний, которые не могут обновиться немедленно, ограничьте доступ на публикацию в очереди и темы, потребляемые Camel, только доверенными производителями через авторизацию брокера JMS и не открывайте JMS-потребители, которые сопоставляют тела ObjectMessage с недоверенными сетями; список разрешённых десериализации JMS-провайдера не смягчает этот конкретный обход, поскольку созданная полезная нагрузка использует только общедоступные доверенные классы.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.