Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-43865 — Reproducer for CVE-2026-43865 — Apache Camel camel-hazelcast default-configured instance unsafe Java deserialization (RCE) | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-43865
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHuboscerd/cve-2026-43865

CVE-2026-43865

Reproducer for CVE-2026-43865 — Apache Camel camel-hazelcast default-configured instance unsafe Java deserialization (RCE)

저장소 보기
1개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

camel-hazelcast 기본 인스턴스 안전하지 않은 역직렬화 재현기 (CVE-2026-43865)

이 프로젝트는 Apache Camel의 camel-hazelcast 구성 요소에서 CVE-2026-43865로 추적되는 Java 역직렬화 취약점을 보여줍니다. Camel이 자체적으로 Hazelcast Config를 빌드할 때 — 즉, 사용자가 제공한 HazelcastInstance, hazelcastConfigUri 또는 참조된 Config 빈이 없는 경우 — Java 역직렬화 필터를 적용하지 않습니다 (Hazelcast의 JavaSerializationFilterConfig도, Camel 쪽 ObjectInputFilter도 적용되지 않음). 따라서 Hazelcast 클러스터 프로토콜을 통해 도착하는 객체는 클래스 제한 없이 Hazelcast의 직렬화 계층 (ObjectInputStream.readObject) 내에서 역직렬화됩니다. 클러스터에 가입하거나 접근할 수 있는 공격자는 조작된 직렬화 객체를 게시하여 모든 Camel 노드에서 역직렬화되게 할 수 있습니다 — 원격 코드 실행이며, 기본적으로 존재하고 옵트인 엔드포인트 구성이 필요하지 않습니다.

Advisory: https://camel.apache.org/security/CVE-2026-43865.html

취약점 요약

이는 Hazelcast 라이브러리 권고 CVE-2016-10750 / CVE-2022-36418 (Hazelcast 자체 코드에 관한 것)과 다릅니다. 여기서의 결함은 Camel이 Hazelcast가 제공하는 역직렬화 보호를 적용하지 않는 것입니다.

기술적 세부 사항

인스턴스/구성이 제공되지 않으면 HazelcastDefaultComponent는 기본 구성에서 인스턴스를 빌드하며 직렬화 필터를 설정하지 않습니다:

root@kitploit:~
// HazelcastDefaultComponent - affected 4.18.2
if (hazelcastInstance == null && config == null) {
    config = new XmlConfigBuilder().build();
    config.getProperties().setProperty("hazelcast.version.check.enabled", "false");
    config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
    hzInstance = Hazelcast.newHazelcastInstance(config);   // no JavaSerializationFilterConfig
}

수정 사항은 Camel이 직접 생성한 인스턴스에 기본 필터를 적용하고 (화이트리스트 java./javax./org.apache.camel., 블랙리스트 java.net.), 사용자 제공 Config/HazelcastInstance는 그대로 둡니다:

root@kitploit:~
// fixed 4.18.3 / 4.21.0
config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
HazelcastSerializationFilterHelper.applyDefault(config);   // <-- added
hzInstance = Hazelcast.newHazelcastInstance(config);

역직렬화된 객체를 Camel에 전달하는 모든 구조가 이를 트리거합니다. 이 PoC는 Poll 모드의 queue consumer를 사용하며, 여기서 IQueue.poll()은 Camel이 라우팅하기 전에 헤드 요소를 역직렬화합니다:

root@kitploit:~
// HazelcastQueueConsumer (Poll mode) - affected
final Object body = queue.poll(config.getPollingTimeout(), TimeUnit.MILLISECONDS);  // readObject, no filter
exchange.getIn().setBody(body);

피해자 경로

root@kitploit:~
from("hazelcast-queue:cve?queueConsumerMode=Poll")   // Camel builds the default (unfiltered) instance
    .log("Consumed: ${body.class.name}");

저장소 구조 — 공격자 vs. 피해자

피해자는 Camel 노드(Hazelcast 멤버)입니다. 공격자는 클러스터에 접근할 수 있는 모든 당사자입니다. 이 독립형 PoC는 동일한 단일 멤버 클러스터(dev on 127.0.0.1:5701)에 가입하고 피해자가 소비하는 큐에 가젯을 제공하는 Hazelcast 클라이언트(공격자)를 실행합니다.

root@kitploit:~
CVE-2026-43865/
├── pom.xml                 # camel-hazelcast 4.18.2 + commons-collections 3.2.1 (gadget)
├── Dockerfile              # runs the app (--add-opens for gadget build; loopback cluster address)
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # victim: hazelcast-queue consumer (default instance)
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during Hazelcast deserialization
    │   └── ExploitController.java  # attacker: Hazelcast client offers the gadget to the queue
    └── resources/
        └── application.properties

실제 공격에서는 직렬화된 바이트가 공격자 자신의 Hazelcast 클라이언트/멤버에 의해 생성됩니다. 오직 피해자만이 자신의 클래스패스에 가젯 체인이 필요합니다. 이 PoC는 가젯을 프로세스 내에서 빌드하며, 이것이 JVM이 --add-opens java.base/java.util=ALL-UNNAMED로 실행되는 이유입니다 — 가젯 구성 세부 사항이며 취약성과 관련이 없습니다.

사전 요구 사항

  • Java 17+ 및 Maven 3.8+
  • Docker (재현기 실행)

재현 단계

1단계: 컨테이너 빌드 및 시작

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

2단계: 역직렬화 트리거 (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Offered gadget to hazelcast queue 'cve' as a cluster client.
#    The Camel node's queue.poll() deserialized it via Hazelcast (no filter).
#
#    >>> RCE proof — /tmp/pwned exists: true

3단계: 확인

root@kitploit:~
docker exec cve-2026-43865 ls -la /tmp/pwned

정리

root@kitploit:~
docker compose down

공격 벡터

hazelcast-topic, hazelcast-queue, hazelcast-seda, hazelcast-map, hazelcast-multimap, hazelcast-replicatedmap, hazelcast-list, hazelcast-set과 같은 hazelcast consumer를 사용하는 모든 Camel 경로, 또는 HazelcastAggregationRepository / HazelcastIdempotentRepository에서 관리 인스턴스가 Camel의 기본 구성에서 생성되고 공격자가 클러스터에 접근할 수 있을 때마다.

익스플로잇 조건

  1. camel-hazelcast consumer/repository가 Camel의 기본 구성에서 생성된 인스턴스를 사용하는 경우 (사용자 제공 HazelcastInstance / hazelcastConfigUri / Config 빈이 없음).
  2. 공격자가 Hazelcast 클러스터에 가입하거나 접근할 수 있는 경우 (기본적으로 인증/TLS 없음).
  3. 클래스패스에 가젯 라이브러리가 있는 경우 (여기서는 commons-collections:3.2.1).

권장 수정 사항

4.14.8 / 4.18.3 / 4.21.0(CAMEL-23414)로 업그레이드하십시오. 이 버전은 Camel이 자체 기본 구성에서 생성한 인스턴스에 기본 Hazelcast JavaSerializationFilterConfig를 적용합니다.

완화 조치

업그레이드할 때까지:

  1. Hazelcast 인스턴스에 역직렬화 필터 구성 (JavaSerializationFilterConfig 또는 JVM 전체 -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*).
  2. Hazelcast 클러스터 인증 및 TLS를 활성화하여 클러스터에 접근할 수 있는 주체를 제한합니다.
  3. 클래스패스에서 가젯 라이브러리를 제거합니다 (commons-collections 3.x 및 유사 라이브러리 업그레이드/제거).

면책 조항

이 재현기는 공개적으로 공개되고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템에 대해 사용하지 마십시오.

도구 다운로드
속성값
구성 요소camel-hazelcast (모든 consumer + HazelcastAggregationRepository / HazelcastIdempotentRepository)
영향 받는 클래스org.apache.camel.component.hazelcast.HazelcastDefaultComponent (기본 구성 인스턴스 생성)
CWECWE-502: 신뢰할 수 없는 데이터의 역직렬화
영향클러스터의 모든 Camel 노드에서 원격 코드 실행(RCE)
트리거Camel의 기본 구성에서 관리 인스턴스가 생성된 hazelcast consumer/repository
영향 받는 버전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
JIRACAMEL-23414
리포터gaorenyusi