
Воспроизведение CVE-2026-48203: Apache Camel camel-solr SolrParam./SolrField. инъекция заголовков, позволяющая инъекцию полей документов Solr и SSRF через параметр shards (исправлено в 4.14.8/4.18.3/4.21.0)
SolrParam. / SolrField. в camel-solrРабочие proof-of-concept воспроизведения одной и той же уязвимости Apache Camel, по одному на каждую среду выполнения:
| Среда выполнения | Каталог | Стек |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (включает Camel 4.20.0) |
Обе версии затронуты уязвимостью (исправлено в 4.14.8 / 4.18.3 / 4.21.0), и обе демонстрируют один и тот же дефект:
производитель camel-solr копирует любой входящий заголовок, начинающийся с SolrField., в индексируемый документ, а любой заголовок,
начинающийся с SolrParam., — в параметры запроса Solr. Эти префиксы не входят в пространство имён Camel*, поэтому
фильтр границ HTTP не удаляет их — клиент исправленной конечной точки «сохранить заметку» / «поиск» внедряет
произвольные поля документа (CWE-74) и параметры запроса Solr, включая shards для подделки запроса на стороне сервера
(CWE-918).
Оба варианта используют потребитель netty-http (не сервлетный контейнер): сопоставление префиксов SolrField. / SolrParam.
чувствительно к регистру, и netty-http сохраняет регистр имён заголовков там, где сервлетный контейнер привёл бы их к нижнему регистру.
Каждый подкаталог представляет собой автономный проект (плюс контейнер Solr, запускаемый его docker-compose.yml) с собственным
Dockerfile и README. Вкратце, для любого из них:
cd camel-spring-boot # или: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Контейнер Solr запускается с -Dsolr.disable.allowUrls=true, чтобы SSRF через shards достигал внутреннего слушателя;
на Solr с настроенным allowUrls собственная защита Solr блокирует SSRF через shards, но инъекция полей документа через SolrField.*
не затрагивается.
| Свойство | Значение |
|---|---|
| Компонент | camel-solr |
| Затронутый класс | org.apache.camel.component.solr.SolrProducer / SolrRequestConverter (префиксы SolrParam. / SolrField.) |
| CWE | CWE-20 → CWE-74 (инъекция полей) и CWE-918 (SSRF) |
| Воздействие | Внедрение произвольных параметров запроса Solr (shards/stream.url → SSRF, qt → обработчики администратора) и произвольных полей индексируемого документа |
| Затронутые версии | С 4.0.0 до 4.14.8, с 4.15.0 до 4.18.3, с 4.19.0 до 4.21.0 |
| Исправленные версии | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23597 (PR apache/camel#23410) |
| Автор | Yu Bao (PayPal) |
Консультация: https://camel.apache.org/security/CVE-2026-48203.html
Эти воспроизведения предоставлены только для исследований в области безопасности и авторизованного тестирования, для публично раскрытой и исправленной уязвимости. Не используйте их против систем без явного разрешения.