Резюме
Некорректная проверка входных данных, раскрытие конфиденциальной информации неавторизованному субъекту, уязвимость подделки серверных запросов (SSRF) в компоненте Iggy Apache Camel. Потребитель camel-iggy сопоставлял пользовательские заголовки входящих сообщений Iggy с картой заголовков Camel Exchange без применения какого-либо HeaderFilterStrategy (IggyFetchRecords копировал пользовательские заголовки сообщения напрямую в Exchange). Поскольку пространство имён заголовков Camel ничем не блокировалось, субъект, способный публиковать сообщения в потребляемый поток/топик Iggy, мог задавать внутренние управляющие заголовки Camel — включая CamelHttpUri (Exchange.HTTP_URI) — просто указав их в качестве пользовательских заголовков сообщения. В маршруте, где потребитель Iggy передаёт данные нижестоящему HTTP-производителю, внедрённый CamelHttpUri перенаправляет серверный HTTP-запрос на выбранный атакующим адрес (подделка серверных запросов — например, на внутренний сервис или endpoint метаданных облака). Кроме того, HTTP-производитель разрешает плейсхолдеры свойств Camel в итоговом (контролируемом атакующим) URI, поэтому плейсхолдеры, встроенные во внедрённое значение — например, ссылка на переменную окружения, свойство приложения или ссылка на хранилище секретов — разрешаются в свои реальные значения и отправляются атакующему, раскрывая переменные окружения, свойства приложений и секреты из хранилища. Эта проблема затрагивает Apache Camel: с 4.17.0 до 4.18.3, с 4.19.0 до 4.21.0. Пользователям рекомендуется обновиться до версии 4.21.0, которая устраняет проблему. Если пользователи находятся на ветке релизов 4.18.x, им рекомендуется обновиться до 4.18.3. Исправление добавляет выделенный IggyHeaderFilterStrategy (и опцию endpoint headerFilterStrategy), который фильтрует пространство имён заголовков Camel без учёта регистра при сопоставлении входящих данных, поэтому внешние заголовки Camel* / camel* больше не копируются в Exchange. Для развёртываний, которые не могут обновиться немедленно, удалите управляющие заголовки Camel из входящего сообщения до того, как они достигнут любого нижестоящего производителя (например, removeHeaders('Camel*') и removeHeaders('camel*') в начале маршрута), ограничьте круг лиц, которые могут публиковать в потребляемый поток/топик Iggy, и избегайте прямого соединения непроверенного потребителя с HTTP-производителем, целевой URI которого может управляться через заголовки сообщений.