CVE-2026-95664
Apache Camel: Camel-AWS2-S3 プロデューサーが CamelAwsS3Key ヘッダーの信頼できない S3 オブジェクトキーをシンプル式として評価する
- 公開済み
- 2026/10/26
- 更新済み
- 2026/10/26
- CNA の割り当て
- apache
- 観察された証拠
- 2026/10/30
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N低 · 今後 30 日間
- パーセンタイル
- 57.7%
- モデルの日付
- 2026/10/31
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Apache Camel AWS2-s3コンポーネントにおける、式言語ステートメントで使用される特殊要素の不適切な中和(「式言語インジェクション」)の脆弱性。この問題はApache Camelの4.8.0から4.18.5未満、および4.19.0から4.22.2未満に影響します。アップロード、読み取り、または削除するオブジェクトについて、camel-aws2-s3プロデューサーはCamelAwsS3Keyメッセージヘッダーからキーを取得し、そのヘッダーが存在しない場合にのみ、エンドポイントで設定されたkeyNameオプションにフォールバックします。4.8.0以降、AWS2S3Utils.determineKey()は、結果の値に${または$simple{が含まれる場合、その値をSimple言語にも渡すようになったため、ルートは動的キーを使用でき、評価は設定されたオプションだけでなくヘッダーから取得した値にも適用されました。しかし、ヘッダーはルート設定ではありません。aws2-s3コンシューマーは、自身が作成するエクスチェンジに、読み取ったオブジェクトのキー、つまりバケット内のオブジェクト名をCamelAwsS3Keyとして設定します。したがって、1つのaws2-s3エンドポイントから消費して別のエンドポイントへプロデュースするだけのルートでは、消費された各オブジェクトの名前がプロデューサーに到達し、いずれかのマーカーを含む名前は、ルート作成者が一切評価を要求していなくても式として評価されました。また、プロデューサーでkeyNameを設定しても、ヘッダーが優先されるため防げませんでした。ルートが他のメッセージ内容からヘッダーにコピーしたキーも同様に評価されました。そのため、そのようなルートが消費するバケット内のオブジェクト名を選択できる者、通常はそのバケットへのアップロードを許可されたプリンシパルが、任意のSimple式をCamelプロセス内で評価させることができました。Simple言語は、一般に認証情報を含むJVMシステムプロパティ、環境変数、設定プロパティを読み取ることができ、camel-beanがクラスパス上にある場合は、レジストリ内のBeanのメソッドを呼び出すこともできます。評価結果はプロデューサーが使用するキーになったため、値を読み戻すにはさらに宛先バケット内のオブジェクト名を確認できる能力が必要でしたが、メソッド呼び出しはその能力なしで効果を発揮しました。消費されるバケット内のオブジェクトを命名できる必要があることと合わせて、これが深刻度が中程度と評価される理由です。バケット名も同じ評価を経ましたが、コンシューマーは自身のエンドポイントで設定されたバケットをバケットヘッダーに設定するだけで、リモートオブジェクトから派生した値を設定することはないため、バケット名はこの方法では到達できませんでした。4.8.0より前のリリースは、ヘッダーのキーをそのまま使用しており、影響を受けません。ユーザーは、この問題を修正したバージョン4.23.0へのアップグレードを推奨されます。4.22.xリリースストリームを使用している場合は、4.22.2へのアップグレードを推奨します。4.18.xリリースストリームを使用している場合は、4.18.5へのアップグレードを推奨します。4.8.xから4.17.x、および4.19.xから4.21.xのリリースラインは、この問題が解決される前にサポート終了となっており、修正は提供されないため、これらのデプロイメントはサポート対象のリリースへ移行する必要があります。アップグレード後は、メッセージヘッダーを介して提供されたキーまたはバケット名はリテラルとして使用されるため、未評価のSimple式をCamelAwsS3KeyまたはCamelAwsS3OverrideBucketNameヘッダーに設定していたルートは、代わりにルート内で評価する(たとえばsetHeaderとsimple()を使用する)か、エンドポイントのkeyNameまたはbucketNameオプションとして設定する必要があります。すぐにアップグレードできないデプロイメントでは、オブジェクト名または他の信頼できないメッセージ内容から派生したキーを、チェックせずにaws2-s3プロデューサーへ到達させないでください。aws2-s3コンシューマーからaws2-s3プロデューサーへエクスチェンジを渡すルートでは、プロデューサーの前にremoveHeader(“CamelAwsS3Key”)でCamelAwsS3Keyヘッダーを削除して、エンドポイントで設定されたkeyNameが使用されるようにするか、CamelAwsS3Keyヘッダーに${または$simple{が含まれるエクスチェンジを拒否してください。keyNameのみを設定することは、ヘッダーがそれより優先されるため、回避策にはなりません。多層防御として、Camelルートが消費するバケットへの書き込みを信頼されたプリンシパルのみに許可してください。
ソース
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。