
CVE-2026-49042(Apache Camel camel-langchain4j-tools)용 PoC 재현 코드: 프롬프트 주입된 LLM의 도구 호출 인자가 필터링되지 않은 Exchange 헤더가 되어 도구 라우트의 exec: 싱크를 가로채 RCE를 유발합니다. 4.14.8/4.18.3/4.21.0에서 수정되었습니다.
동일한 Apache Camel 취약점에 대한 실행 가능한 개념 증명 재현기(러너타임별):
| 런타임 | 디렉터리 | 스택 | 하이재킹된 싱크 | 입증된 영향 |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | exec: via CamelExecCommand* | 원격 코드 실행 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (번들 Camel 4.20.0) | http via CamelHttpUri | SSRF + 비밀 노출 |
둘 다 영향을 받는 버전이며(4.14.8 / 4.18.3 / 4.21.0에서 수정됨), 둘 다 동일한 결함을 입증합니다:
LangChain4jToolsProducer#invokeTools는 모델의 툴 호출 인자 JSON의 모든 필드를 그대로
Exchange 헤더로 복사하며, 선언된 파라미터 스키마에 대한 검사가 전혀 없습니다. 툴은 하나의 파라미터
(host)를 선언하지만, 프롬프트 인젝션된 모델이 추가 필드를 생성하면 이 필드들이 Camel 제어 헤더로
자리 잡고 툴 라우트가 다운스트림에서 사용하는 모든 프로듀서를 하이재킹합니다 (CWE-20).
실제 LLM이나 API 키는 필요 없습니다: 인젝션은 전적으로 목 모델(mock model)이 생성하는 툴 호출 인자에 존재하며, 이는 탈옥(jailbreak)되거나 간접 프롬프트 인젝션된 모델이 생성할 것과 정확히 동일합니다.
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 변형은 기본적으로 존중되는 http
프로듀서를 하이재킹하고, 추가로 프로듀서가 해석하는 Camel 프로퍼티 플레이스홀더를 몰래 밀반입하여
SSRF와 실제 애플리케이션 비밀 노출을 유발합니다.
각 하위 디렉터리는 자체 Dockerfile, docker-compose.yml, README를 갖춘 독립 프로젝트입니다.
간단히 말해, 둘 중 하나에 대해:
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
조언: https://camel.apache.org/security/CVE-2026-49042.html
이 재현기들은 공개적으로 공개되고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템에 사용하지 마십시오.
| 속성 | 값 |
|---|
| 구성 요소 | camel-langchain4j-tools (또한 camel-langchain4j-agent, camel-spring-ai-tools) |
| 영향 받는 클래스 | org.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools |
| CWE | CWE-20 (부적절한 입력 검증) — 필터링되지 않은 툴 호출 인자가 Exchange 제어 헤더가 됨 |
| 영향 | RCE / SSRF / 임의 파일 쓰기 (툴 라우트의 다운스트림 프로듀서에 따라 다름) |
| 영향 받는 버전 | 4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x |
| 수정된 버전 | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23621 (PR apache/camel#23535) |
| 크레딧 | Yu Bao (PayPal) |