
CVE-2026-46456 재현기 — Apache Camel camel-aws2-sqs 인바운드 메시지 속성 헤더 주입 (sqs:SendMessage를 통한 Camel 제어 헤더 주입 → 다운스트림 프로듀서 조종 / 원격 코드 실행(RCE))
| 런타임 | 디렉터리 | 스택 | 탈취된 싱크 | 입증된 영향 |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | CamelExecCommand*를 통한 exec: | 원격 코드 실행 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (Camel 4.20.0 번들 포함) | CamelHttpUri를 통한 http | 서버 측 요청 위조 |
두 런타임 모두 영향을 받는 버전이며(4.14.8 / 4.18.3 / 4.21.0에서 수정됨), 둘 다 동일한 결함을 보여줍니다. Sqs2HeaderFilterStrategy는 아웃바운드 필터만 구성하므로 Sqs2Consumer는 모든 인바운드 SQS 메시지 속성(Camel 제어 헤더 포함)을 Exchange에 매핑합니다. 경로 작성자는 다운스트림 대상을 변경할 방법을 노출한 적이 없지만, 메시지를 큐에 넣을 수 있는 공격자는 제어 헤더를 주입하여 다운스트림 생산자(producer)를 조종할 수 있습니다(CWE-20).
Spring Boot 변형은 exec: 싱크를 통해 RCE를 입증합니다. 이 싱크는 Camel 4.20.0(Camel Quarkus 3.36.0이 번들로 포함하는 버전)에서는 기본적으로 도달할 수 없습니다. CAMEL-23315는 camel-exec에 allowControlHeaders 옵션을 추가했으며, 기본값은 false이고 4.20.0에서 처음 배포되었습니다. 이 강화 조치는 이 CVE와 무관하며 이 취약점을 수정하지 않습니다 — 주입된 메시지 속성은 4.20.0에서 여전히 Exchange 헤더가 됩니다. 따라서 Quarkus 변형은 기본적으로 지원되는 CamelHttpUri를 통해 http 생산자를 탈취하여 SSRF를 유발합니다.
각 하위 디렉터리는 자체 Dockerfile과 README를 갖춘 독립적인 프로젝트이며, 해당 docker-compose.yml로 시작되는 LocalStack 컨테이너를 포함합니다. 간단히 말해, 둘 중 하나에 대해서는:
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
| 속성 | 값 |
|---|---|
| 컴포넌트 | camel-aws2-sqs |
| 영향을 받는 클래스 | org.apache.camel.component.aws2.sqs.Sqs2HeaderFilterStrategy (인바운드 필터 없음) / Sqs2Consumer |
| CWE | CWE-20: 부적절한 입력 검증 |
| 영향 | 메시지 발신자가 Camel 제어 헤더를 주입 → 다운스트림 생산자 조종 |
| 영향을 받는 버전 | 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-23506 |
이 재현 코드는 공개적으로 알려졌고 이미 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로만 제공됩니다. 명시적 허가 없이 시스템에 사용하지 마십시오.