
CVE-2026-46592 재현기: Apache Camel의 camel-cxf operationName 헤더 주입으로 호출된 SOAP 작업(confused deputy)을 읽기 작업에서 파괴적 작업으로 리디렉션(4.14.8/4.18.3/4.21.0에서 수정됨)
operationName 헤더 주입 (SOAP 작업 리디렉션)동일한 Apache Camel 취약점에 대한 실행 가능한 개념 증명(PoC) 재현 코드로, 런타임별로 하나씩 제공됩니다:
| 런타임 | 디렉터리 | 스택 | 백엔드 SOAP 서비스 |
|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | 자체 포트 :9000에서 CXF ServerFactoryBean |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (Camel 4.20.0 번들 포함) | 관리형 서버의 quarkus-cxf, /soapservice/account |
둘 다 영향을 받는 버전이며(4.14.8 / 4.18.3 / 4.21.0에서 수정됨), 동일한 결함을 보여줍니다:
CxfProducer#getBindingOperationInfo는 먼저 operationName 메시지 헤더를 찾고, 헤더가 없을 때만 엔드포인트의
defaultOperationName으로 폴백합니다. 해당 헤더 상수의 값은 CamelCxfOperationName이 아니라 일반 문자열
operationName이므로, HTTP 경계 필터(Camel*만 제거)는 이름이 같은 인바운드 HTTP 헤더를 그대로 통과시킵니다.
신뢰할 수 없는 클라이언트가 operationName: deleteAccount를 추가하면 경로에 고정된 읽기 전용 getBalance가
파괴적인 호출로 변합니다 (CWE-441, 혼동된 대리자).
두 변형은 백엔드 SOAP 서비스를 구성하는 방식만 다릅니다: Quarkus 변형은 관리형 Quarkus HTTP 서버에서 quarkus-cxf로 서비스를 게시하고(따라서 계약에 JAX-WS
@WebService애너테이션이 포함됨), Spring Boot 변형은 별도 포트의 CXFServerFactoryBean으로 프로그래밍 방식으로 생성합니다. 이 차이는 결함에 영향을 주지 않습니다.
각 하위 디렉터리는 자체 Dockerfile, docker-compose.yml, README를 포함한 독립적인 프로젝트입니다.
요약하면, 둘 중 하나에 대해:
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-46592.html
이 재현 코드는 공개적으로 공개되고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템을 대상으로 사용하지 마십시오.
| 속성 | 값 |
|---|
| 구성 요소 | camel-cxf (camel-cxf-soap; 상수는 camel-cxf-common에 있으므로 camel-cxfrs도 영향을 받음) |
| 영향을 받는 클래스 | CxfConstants.OPERATION_NAME("operationName")을 읽는 org.apache.camel.component.cxf.jaxws.CxfProducer#getBindingOperationInfo |
| CWE | CWE-20 (부적절한 입력 검증) / CWE-441 (의도하지 않은 프록시 또는 중개자 — 혼동된 대리자) |
| 영향 | HTTP 클라이언트가 operationName을 설정 → 프로듀서가 다른 SOAP 작업(예: 파괴적인 작업)을 호출 |
| 영향을 받는 버전 | 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-23526 (PR apache/camel#23326) |
| 크레딧 | Yu Bao (PayPal) |