
CVE-2026-46457 재현 도구 — Apache Camel camel-nats 인바운드 헤더 주입 (NATS 퍼블리셔를 통한 Camel 제어 헤더 주입; CamelHttpUri -> SSRF)
동일한 Apache Camel 취약점에 대한 실행 가능한 개념 증명(PoC) 재현 코드로, 런타임별로 하나씩 제공됩니다:
| 런타임 | 디렉터리 | 스택 |
|---|---|---|
| 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에서 수정됨), 둘 다 동일한 결함을 보여줍니다:
NatsConfiguration은 headerFilterStrategy의 기본값을 인바운드 규칙이 없는 단순한
new DefaultHeaderFilterStrategy()로 설정하므로, NatsConsumer는 CamelHttpUri를 포함한 모든
인바운드 NATS 메시지 헤더를 Exchange에 복사합니다. camel-http 프로듀서는 해당 헤더를
요청 URI로 사용하므로, 소비 중인 subject에 게시할 수 있는 사람은 누구나 아웃바운드 요청을
자신이 선택한 대상으로 리다이렉트할 수 있습니다(SSRF, CWE-20). 동일한 기법은 헤더로 제어되는
모든 프로듀서(CamelFileName, CamelSqlQuery, ...)에도 적용됩니다.
각 하위 디렉터리는 자체 Dockerfile과 README를 갖춘 독립적인 프로젝트입니다(자체
docker-compose.yml으로 시작되는 NATS 브로커 포함). 간단히 말해, 둘 중 하나에 대해 다음을 실행합니다:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
보안 권고: https://camel.apache.org/security/CVE-2026-46457.html
이 재현 코드는 공개적으로 알려지고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적인 허가 없이 시스템을 대상으로 사용하지 마십시오.
| 속성 | 값 |
|---|
| 컴포넌트 | camel-nats |
| 영향을 받는 클래스 | org.apache.camel.component.nats.NatsConfiguration (기본 DefaultHeaderFilterStrategy) / NatsConsumer |
| CWE | CWE-20: 부적절한 입력 검증 |
| 영향 | subject 게시자가 Camel 제어 헤더를 주입 → 다운스트림 프로듀서를 조종할 수 있음 (여기서는 SSRF 시연) |
| 영향을 받는 버전 | 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-23515 |