CVE-2026-83531
Apache Camel: Camel-Dynamic-Router の制御エンドポイントが制御メッセージで提供された述語式をコンパイルする
- 公開済み
- 2026/10/19
- 更新済み
- 2026/10/20
- CNA の割り当て
- apache
- 観察された証拠
- 2026/10/19
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 今後 30 日間
- パーセンタイル
- 57.9%
- モデルの日付
- 2026/10/25
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
コード生成の不適切な制御(「コードインジェクション」)、式言語文で使用される特殊要素の不適切な中和(「式言語インジェクション」)に関する Apache Camel の脆弱性。この問題は Apache Camel に影響します:4.4.0 から 4.18.5 より前、4.19.0 から 4.22.1 より前。4.4.0 で導入された dynamic-router-control エンドポイントは、ルーティング参加者が制御メッセージを送信することで Dynamic Router のサブスクリプションを管理できるようにします。サブスクライブまたは更新リクエストを処理する際、DynamicRouterControlProducer はサブスクリプションの述語と、それをコンパイルするために使用する言語の名前を受信メッセージから取得しました。取得元は DynamicRouterControlMessage ボディの predicate フィールドと expressionLanguage フィールド、または CamelDynamicRouterPredicate ヘッダーと CamelDynamicRouterExpressionLanguage ヘッダーのいずれかです。次に DynamicRouterControlService がその言語を CamelContext から解決し、式を Predicate にコンパイルしました。許可リストもオプトインもありませんでした。コンパイルされた述語はチャネルのルールベースに追加され、サブスクリプションが存在する限り、対応する dynamic-router エンドポイントを経由してルーティングされるすべての exchange に対して評価されました。したがって、他の JVM やアプリケーションのルーティング参加者に関するコンポーネントドキュメントに示されているように、外部トランスポートから制御エンドポイントへメッセージを転送するルートがある場合、そのトランスポート上でメッセージを送信できる任意のアクターが任意の式を提供でき、それが Camel プロセスの権限で評価されました。クラスパス上で利用可能な任意の式言語を選択でき、常に存在しヘッダーパスのデフォルトであった simple 言語も含まれていました。そのため、オプションの式言語をクラスパスから削除しても、この問題は防止できませんでした。悪用には、ルートが dynamic-router-control エンドポイントへ転送するトランスポート上でメッセージを送信できる能力が必要です。その他の認証やユーザー操作は不要です。4.4.0 より前のリリースは影響を受けません。これらの制御チャネルは、ルート作成者が設定したエンドポイント URI からのみ述語式を取得していたためです。ユーザーは、この問題を修正するバージョン 4.23.0 へのアップグレードを推奨されます。4.22.x リリースストリームを使用している場合は、4.22.1 へのアップグレードを推奨します。4.18.x リリースストリームを使用している場合は、4.18.5 へのアップグレードを推奨します。4.14.x リリースストリーム以前は、この問題が解決される前にサポート終了となっており、修正は提供されないため、これらの系統のデプロイメントはサポート対象リリースへ移行する必要があります。アップグレード後は、dynamic-router-control エンドポイントで新しい allowPredicateFromMessage オプションが有効になっていない限り、述語式または式言語を含む制御メッセージは拒否されます。このオプションは、制御メッセージの送信者がすべて信頼できる場合にのみ有効にしてください。すぐにアップグレードできないデプロイメントでは、信頼できない、または共有のトランスポートから dynamic-router-control エンドポイントへメッセージを転送しないでください。制御メッセージがそのようなトランスポートを通過する必要がある場合は、送信者を認証し、各サブスクリプションの述語と式言語が受信メッセージから取得されるのではなくルートによって設定されるようにしてください。たとえば、エンドポイントに到達する前に CamelDynamicRouterPredicate ヘッダーと CamelDynamicRouterExpressionLanguage ヘッダーを削除し、DynamicRouterControlMessage の predicate フィールドと expressionLanguage フィールドをクリアします。オプションの式言語をクラスパスから削除することは、十分な回避策ではありません。多層防御として、制御エンドポイントに供給するトランスポートへ送信できる者を制限し、4.23.0 および 4.22.1 では dynamic-router エンドポイントの allowedSchemes オプションを設定して、サブスクリプションの destinationUri が指定できるエンドポイントを制限してください。
ソース
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。