
CVE-2026-48203 재현 도구: Apache Camel camel-solr의 SolrParam./SolrField. 헤더 주입으로 Solr 문서 필드 주입 및 shards 매개변수를 통한 SSRF를 가능하게 함 (4.14.8/4.18.3/4.21.0에서 수정됨)
| 런타임 | 디렉터리 | 스택 |
|---|
| 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는 서블릿 컨테이너가 소문자로 변환하는 경우에도 헤더 이름의 대소문자를 보존합니다.
각 하위 디렉터리는 자체 Dockerfile과 README가 있는 독립 실행형 프로젝트(자체 docker-compose.yml로 시작되는 Solr 컨테이너 포함)입니다.
간단히 말해, 둘 중 하나에 대해:
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로 실행되므로 shards SSRF가 내부 리스너에 도달합니다.
allowUrls가 구성된 Solr에서는 Solr 자체 방어가 shards SSRF를 차단하지만, 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) |
이 재현기들은 공개적으로 공개되고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템에 대해 사용하지 마십시오.