Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-83531 — CVE-2026-83531에 대한 실행 가능한 Spring Boot 개념 증명으로, Apache Camel의 dynamic-router-control 엔드포인트에서 발생하는 표현식 언어 주입을 시연하고 수정 사항을 검증합니다. | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-83531
Defensive ToolsVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationLearning & Education
GitHuboscerd/cve-2026-83531

CVE-2026-83531

CVE-2026-83531에 대한 실행 가능한 Spring Boot 개념 증명으로, Apache Camel의 dynamic-router-control 엔드포인트에서 발생하는 표현식 언어 주입을 시연하고 수정 사항을 검증합니다.

저장소 보기
32일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-83531 — camel-dynamic-router: 제어 엔드포인트 표현식 언어 주입

dynamic-router-control 엔드포인트가 구독 predicate와 이를 컴파일하는 데 사용되는 언어의 이름을 수신 메시지로부터 가져오는 Apache Camel 취약점에 대한 실행 가능한 개념 증명(PoC) 재현기입니다(DynamicRouterControlMessage의 predicate / expressionLanguage 필드, 또는 CamelDynamicRouterPredicate / CamelDynamicRouterExpressionLanguage 헤더). 이후 서비스는 CamelContext에서 해당 언어를 확인하고 표현식을 Predicate로 컴파일했으며, 허용 목록도, 옵트인도 없었습니다. 컴파일된 predicate는 채널을 통해 라우팅되는 모든 exchange에 대해 평가되었습니다. 따라서 해당 라우트가 메시지를 제어 엔드포인트로 전달하는 전송 계층에 메시지를 보낼 수 있는 모든 행위자는 자신이 선택한 표현식을 제공할 수 있었고, 이는 Camel 프로세스의 권한으로 평가되었습니다. 클래스패스에 있는 모든 언어를 선택할 수 있었으며, 항상 존재하고 기본값이었던 simple도 포함됩니다.

Camel Spring Boot 전용. camel-quarkus-dynamic-router 확장은 존재하지 않으므로, 이 재현기는 Camel Quarkus에서 실행할 수 없습니다.

런타임디렉터리스택
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-dynamic-router 4.22.0 (영향받음; 4.22.1에서 수정됨)

입증 내용

앱은 Dynamic Router 채널 test(direct:start → dynamic-router://test)를 설정합니다. 공격자는 공격자가 선택한 predicate 표현식과 언어를 담은 subscribe 제어 메시지를 전송합니다:

CamelDynamicRouterPredicate          = ${bean:detonator?method=detonate}
CamelDynamicRouterExpressionLanguage = simple

그런 다음 하나의 메시지가 채널을 통해 라우팅되며, 이 채널이 구독 조건자를 평가한다. 영향받는 빌드에서는 표현식이 실행되어 detonator.detonate()를 호출한다. 이는 공격자가 도달할 수 있는 모든 인자 없는 레지스트리 메서드(그리고 Groovy와 같은 모든 언어는 임의 코드를 가능하게 함)를 대신하는 무해한 대체물이다. 수정된 빌드에서는 제어 엔드포인트가 메시지로부터 조건자/언어를 받아들이기를 거부한다.

cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

영향을 받은 빌드에서 예상되는 출력:

Subscription accepted.
>>> PROVEN: the attacker-supplied predicate expression was compiled and evaluated, invoking
>>> detonator.detonate() with the privileges of the Camel process ...

수정된 빌드에서는 구독이 IllegalArgumentException: The subscription predicate expression, and the language used to compile it, cannot be taken from a control message. ... set 'allowPredicateFromMessage=true' ...와 함께 거부됩니다.

취약점 요약

속성값
구성 요소camel-dynamic-router (dynamic-router-control 엔드포인트)
CWECWE-94 (코드 주입), CWE-917 (표현식 언어 주입)
심각도HIGH
공격 벡터라우트가 이를 dynamic-router-control 엔드포인트로 전달하는 전송 계층에서, 술어 표현식과 언어를 제공하는 제어 메시지(subscribe/update)
영향Camel 프로세스의 권한으로 공격자가 선택한 표현식(모든 클래스패스 언어)을 평가 — 코드 실행
영향받는 버전4.4.0부터 4.18.5 이전, 4.19.0부터 4.22.1 이전
수정된 버전4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24576
크레딧Leon Zlobecki

권고문: https://camel.apache.org/security/CVE-2026-83531.html

수정 내용

술어 표현식과 그 언어는 더 이상 기본적으로 제어 메시지에서 가져오지 않습니다. 이를 제공하는 제어 메시지는 라우트 작성자가 dynamic-router-control 엔드포인트에서 allowPredicateFromMessage=true로 명시적으로 옵트인하지 않는 한 거부됩니다. 의도된 경로는 4.4.0 이전 릴리스에서처럼 엔드포인트 URI에서 predicate와 expressionLanguage를 (라우트 작성자가 제어하는 방식으로) 구성하는 것입니다.

업그레이드할 수 없는 경우의 완화 조치

외부에서 발생한 메시지를 dynamic-router-control 엔드포인트로 전달하지 마십시오. 구독은 라우트 작성자가 제어하는 엔드포인트에서만 관리하고, 제어 채널에 도달할 수 있는 전송 계층을 제한하십시오.

면책 조항

이 저장소는 교육 및 방어 목적으로 게시됩니다. Apache Camel 사용자가 취약점을 이해하고, 영향을 받는지 확인하며, 업그레이드가 이를 해결하는지 검증할 수 있도록 돕기 위해서입니다. 페이로드는 무해한 마커 빈입니다. 소유하거나 운영하지 않는 시스템에 이 자료를 사용하지 마십시오.

도구 다운로드