
Apache Camel camel-platform-http-vertx의 CORS 자격 증명 임의 출처 허용 취약점인 CVE-2026-84176을 재현하는 실행 가능한 Spring Boot 개념 증명으로, 검증 단계를 포함합니다.
VertxPlatformHttpServerSupport.createCorsHandler()가 Access-Control-Allow-Credentials: true를 origin 검사 외부에서 설정하여, Origin 헤더를 포함한 요청에 대한 모든 응답에 이 헤더가 전송되는 Apache Camel 취약점에 대한 실행 가능한 개념 증명(PoC) 재현 도구입니다. 여기에는 핸들러가 방금 허용하지 않기로 결정한 origin에 대한 응답도 포함됩니다. camel.server.cors.origins가 설정되지 않은 경우, 핸들러는 모든 origin을 허용된 것으로 처리하고 호출자의 Origin을 그대로 Access-Control-Allow-Origin으로 반사합니다. 이 두 가지가 결합되어 fetch 명세가 리터럴 와일드카드로 표현하기를 거부하는 자격 증명이 포함된 모든 origin 허용 구성이 만들어집니다. 바로 이것이 origin을 반사하는 것이 해당 규칙을 우회하는 일반적인 방법인 이유입니다. 따라서 어떤 origin의 페이지든 Camel 엔드포인트에 자격 증명이 포함된 교차 출처 요청을 보내고 응답을 읽을 수 있습니다.
| 런타임 | 디렉터리 | 스택 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (영향받음; 4.22.1에서 수정됨) |
Camel Quarkus: 해당 없음. 취약한 핸들러는 Camel 자체의 독립형 Vert.x platform-http 서버(
camel-platform-http-vertx)에 있습니다. Camel Quarkus에서는platform-http가 Quarkus HTTP 서버에 의해 제공되며 CORS는createCorsHandler()가 아닌 Quarkus(quarkus.http.cors.*)에 의해 처리되므로, 이 특정 결함은 해당 환경에서는 도달할 수 없습니다. (또한camel-platform-http-vertx-starter는 존재하지 않으며, Spring Boot 모듈은 일반camel-platform-http-vertx아티팩트를 사용하는데, 이는 Spring Boot 웹 서버와 독립적으로 자체 Vert.x 서버를 실행합니다.)
이 앱은 CORS가 활성화되고 구성된 origin이 없는 상태로 포트 8081에서 Camel의 Vert.x platform-http 서버를 시작하며, platform-http:/api 라우트를 가집니다. 공격자는 Origin: https://evil.example(허용 목록에 절대 포함되지 않은 origin)과 함께 GET /api를 전송하고 응답을 검사합니다:
Access-Control-Allow-Origin: https://evil.example (반사됨) 그리고
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials가 더 이상 이 origin에 부여되지 않습니다.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
영향을 받은 빌드에서 예상되는 출력:
Response CORS headers:
Access-Control-Allow-Origin = https://evil.example
Access-Control-Allow-Credentials = true
>>> PROVEN: the endpoint echoes the attacker's Origin ... and sends Access-Control-Allow-Credentials: true ...
| 속성 | 값 |
|---|---|
| 구성 요소 | camel-platform-http-vertx |
| CWE | CWE-942 (신뢰할 수 없는 도메인을 허용하는 관대한 교차 도메인 정책) |
| 심각도 | MEDIUM |
| 공격 벡터 | CORS가 활성화되어 있고 구성된 origin이 없는 platform-http-vertx 엔드포인트로 Origin 헤더를 포함한 교차 출처(자격 증명 포함) 요청 |
| 영향 | 모든 origin이 자격 증명이 포함된 교차 출처 요청을 수행하고 응답을 읽을 수 있음 |
| 영향받는 버전 | 4.0.0부터 4.18.5 이전, 4.19.0부터 4.22.1 이전 |
| 수정된 버전 | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24436 |
| 크레딧 | Claude Security Scan Tool |
권고문: https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true가 더 이상 모든 origin에 대해 무조건 발행되지 않습니다. 자격 증명은
명시적으로 허용되지 않은 origin에 부여되지 않으므로, 반사된 origin과 자격 증명이 결합된("자격 증명이 포함된
모든 origin") 조합은 더 이상 발생하지 않습니다.
명시적인 camel.server.cors.origins 허용 목록을 설정하고, 임의의 origin에서 자격 증명이 포함된 교차 출처
접근에 의존하지 마십시오. 엔드포인트를 올바른 CORS 정책을 적용하는 프록시 뒤에 배치하십시오.
이 저장소는 교육 및 방어 목적으로 게시되었습니다. Apache Camel 사용자가 취약점을 이해하고, 영향을 받는지 확인하며, 업그레이드로 문제가 해결되는지 검증할 수 있도록 돕기 위한 것입니다. 소유하거나 운영하지 않는 시스템에 이 자료를 사용하지 마십시오.