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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-55993 — CVE-2026-55993(Apache Camel camel-atmosphere-websocket)のPoC再現コード:WebSocketコンシューマが接続クエリパラメータをフィルタリングせずにExchangeへコピーするため、注入されたCamelHttpUriがサーバーサイドリクエスト(SSRF)を引き起こし、解決済みのプロパティプレースホルダを漏えいさせます。4.14.8/4.18.3/4.21.0で修正済み。 | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-55993
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストAPIセキュリティ
GitHuboscerd/cve-2026-55993

CVE-2026-55993

CVE-2026-55993(Apache Camel camel-atmosphere-websocket)のPoC再現コード:WebSocketコンシューマが接続クエリパラメータをフィルタリングせずにExchangeへコピーするため、注入されたCamelHttpUriがサーバーサイドリクエスト(SSRF)を引き起こし、解決済みのプロパティプレースホルダを漏えいさせます。4.14.8/4.18.3/4.21.0で修正済み。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

camel-atmosphere-websocket ヘッダーインジェクション再現コード (CVE-2026-55993)

このプロジェクトは、Apache Camel の camel-atmosphere-websocket コンポーネントにおける メッセージヘッダーインジェクション(CVE-2026-55993 として追跡)を実証するものです。WebSocket コンシューマは、接続のクエリパラメータを HeaderFilterStrategy なしで Camel Exchange にコピーするため、クライアントは WebSocket URL のクエリ文字列に追加するだけで、Camel 制御ヘッダー — 特に CamelHttpUri — を注入できます。

root@kitploit:~
// WebsocketConsumer.sendEventNotification (affected 4.18.2) — query params -> Exchange headers, unfiltered
for (Map.Entry<String, String> param : queryMap.entrySet()) {
    exchange.getIn().setHeader(param.getKey(), param.getValue());
}
// where queryMap = getQueryMap(request.getQueryString())  (a naive, non-filtering parser)

ルートがこのコンシューマを HTTP プロデューサにブリッジする場合、注入された CamelHttpUri はプロデューサのターゲット URI を上書きします — サーバーサイドリクエストフォージェリです。camel-http プロデューサは、その攻撃者が制御する URI に対して resolvePropertyPlaceholders() も呼び出すため、注入された {{...}} 参照は実際の値に展開されて送信され、環境変数、アプリケーションプロパティ、またはボールトのシークレットが漏洩します。

この PoC は、影響を SSRF とシークレット漏洩(CWE-20 → CWE-918 + CWE-200) として実証します。これは、CAMEL-23532 の下で一緒に修正された 3 つの関連コンポーネントのうちの 1 つです(camel-vertx-websocket(CVE-2026-46726)および camel-iggy(CVE-2026-55994)とともに)。

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

脆弱性の概要

この修正では、継承された HttpHeaderFilterStrategy をインバウンドのマッピングに適用し、Camel* / camel* ヘッダーを大文字小文字を区別せずにフィルタリングするため、WebSocket のクエリ文字列を通じてヘッダーを注入できなくなります。

この再現コードが実際の脆弱なコードをどのように実行するか

WebsocketConsumer の 2 つの脆弱なメンバーは、攻撃者が制御するクエリ文字列を使用して、変更なしで実行されます。

  1. 実際の WebsocketConsumer.getQueryMap(String) — WebSocket 接続のクエリ文字列をマップに変換する、素朴でフィルタリングを行わないパーサー。
  2. 実際の WebsocketConsumer.sendEventNotification(...) — そのマップのすべてのエントリを HeaderFilterStrategy なしで Exchange にヘッダーとしてコピーする。

結果の Exchange は、実際のルートを通って実際の camel-http プロデューサに流れるため、SSRF と {{...}} プロパティプレースホルダーの漏洩は本物です。

なぜ WebSocket トランスポートを直接使用しないのか。 このコンポーネントバージョン(Camel 4.18.2 → Atmosphere 3.1.0)では、WebSocket は JSR-356 上で提供され、そのアップグレードはサーブレットコンテナによって処理され、接続のクエリ文字列をコンシューマの queryMap にコピーする唯一の場所である CamelWebSocketServlet.service() をバイパスします。sendEventNotification はその(空の)マップを読み取るだけで、WebSocket セッション上のクエリは読み取らないため、この Atmosphere バージョンでは、ライブの JSR-356 WebSocket を通じてインジェクションを配信できません。(Atmosphere 3.1.0 は JSR-356 / Servlet30 / BlockingIO / Netty サポートのみを提供しており、queryMap を入力するサーブレットベースの WebSocket トランスポートはありません。)したがって、この再現コードは、攻撃者のクエリ文字列を使用して 2 つの実際の脆弱なメソッドを直接呼び出します。関連する camel-vertx-websocket PoC(CVE-2026-46726)は、ライブ WebSocket を通じて同一の欠陥を駆動します。これは、そのコンポーネントがすべてのメッセージでクエリをマップするためです。

被害者ルート

root@kitploit:~
from("atmosphere-websocket:///feed")
    .to("http://localhost:8080/legit-backend?throwExceptionOnFailure=false");

ルート作成者が意図した唯一のターゲットは /legit-backend ですが、注入された CamelHttpUri がそれを上書きします。

リポジトリ構成

root@kitploit:~
CVE-2026-55993/
├── pom.xml                 # camel-atmosphere-websocket + camel-http 4.18.2
├── Dockerfile
├── docker-compose.yml      # single self-contained service
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # atmosphere-websocket:///feed -> http://localhost:8080/legit-backend
    │   ├── SinkController.java     # SSRF collector: /legit-backend, /internal/secret, /collect/{secret}
    │   └── ExploitController.java  # drives the real getQueryMap + sendEventNotification with an injected query
    └── resources/
        └── application.properties  # app.secret=... (leaked via placeholder resolution)

前提条件

  • Docker と Docker Compose
  • Java 17+ と Maven 3.8+

再現手順

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

期待される出力

root@kitploit:~
1) Legitimate WebSocket connection (no query params)
     reached /legit-backend: true
     reached /internal/secret: false

2) Injected query 'CamelHttpUri=http://localhost:8080/internal/secret'  (SSRF)
     server-side request reached /internal/secret: true

3) Injected query 'CamelHttpUri=http://localhost:8080/collect/{{app.secret}}'  (secret disclosure)
     attacker's collector received leak = SUPER-SECRET-abc123
     equals the app's real secret: true

>>> SSRF=true, secret-disclosure=true

推奨される修正

4.14.8 / 4.18.3 / 4.21.0(CAMEL-23532)にアップグレードしてください。アップグレード後、コンシューマは WebSocket のクエリ文字列から Camel* ヘッダーをフィルタリングするため、CamelHttpUri やその他の制御ヘッダーを注入できなくなります。

緩和策

アップグレードするまでは、atmosphere-websocket コンシューマを HTTP プロデューサに直接ブリッジせず、まず Camel 制御ヘッダーを除去してください(例:removeHeaders("CamelHttp*"))。また、プロデューサのターゲットは信頼できるソースから設定してください(または bridgeEndpoint=true を使用してください)。

免責事項

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

ツールをダウンロード
PropertyValue
コンポーネントcamel-atmosphere-websocket
影響を受けるクラスorg.apache.camel.component.atmosphere.websocket.WebsocketConsumer(getQueryMap() / sendEventNotification() はクエリパラメータをフィルタなしでヘッダーにマップする)
CWECWE-20(不適切な入力検証)→ CWE-918(SSRF)+ CWE-200(情報漏洩)
影響未認証の SSRF と、注入された URI に対するプロパティプレースホルダー解決によるシークレットの漏洩
前提条件ルートが atmosphere-websocket コンシューマを HTTP プロデューサにブリッジしている。サーブレットが events=true で実行されている
影響を受けるバージョン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-23532(PR apache/camel#23285)
クレジットKamalpreet Singh