CVE-2026-66906
Apache Camel: Camel-Azure-Storage-Blob: downloadBlobToFile操作は、設定されたfileDirに制限することなく、リモートblob名からローカルのダウンロード先を構築していた
- 公開済み
- 2026/08/24
- 更新済み
- 2026/08/25
- CNA の割り当て
- apache
- 観察された証拠
- 2026/08/24
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N低 · 今後 30 日間
- パーセンタイル
- 43.6%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Apache Camel の Azure Storage Blob コンポーネントにおける相対パストラバーサルの脆弱性。この問題は Apache Camel の以下のバージョンに影響します: 4.0.0 から 4.14.9 未満、4.15.0 から 4.18.4 未満、4.19.0 から 4.22.0 未満。camel-azure-storage-blob コンポーネントは、downloadBlobToFile オペレーションを通じて Azure Storage の blob をローカルファイルシステムにダウンロードでき、fileDir エンドポイントオプションで指定されたディレクトリに書き込みます。このオプションはプロデューサーとコンシューマーの両方から使用可能であるとドキュメント化されています。BlobOperations.downloadBlobToFile は、fileDir と Azure SDK が報告したリモート blob 名をそのまま連結してローカルターゲットを構築し (new File(fileDir, client.getBlobName()))、その結果を何の字句的正規化も行わず、解決された場所が fileDir 内に留まっているかどうかのチェックも行わずに、SDK のダウンロード呼び出しへ直接渡していました。blob 名はルート制御のデータではありません。コンシューマーは BlobConsumer.createBatchExchangesFromContainer でコンテナーを列挙し、blob をリストアップして、各エントリーから BlobItem.getName() をそのまま使用して 1 つのエクスチェンジ(exchange)を作成します。デフォルトでは名前のフィルタリングは適用されません。したがって、親ディレクトリセグメントを含む blob 名は、設定された fileDir の外側の場所に解決されます。これにより、消費対象コンテナー内に存在する名前を操作できる者は誰でも、Camel プロセス権限で、任意の場所にファイルを作成または上書きさせることができます。プロセスが書き込める対象によっては、ダウンロードディレクトリ外のファイルを上書きすると、そのファイルの整合性の喪失にとどまらず、より深刻な影響に発展する可能性があります。Azure Storage の blob コンテナーはフラットな名前空間を使用しており、blob 名は不透明なキーであるため、そのようなセグメントを含む名前も、指定されたとおりに保存およびリスト表示されます。fileDir オプションは通常の common グループの設定パラメーターであり、セキュリティマーカーは付いていません。そのため、その値が封じ込め境界として強制されていないことをユーザーに示すものは何もありませんでした。Camel の他のファイルダウンロードコンシューマー (camel-file、camel-ftp、camel-smb、camel-mina-sftp、camel-azure-files) は、パスセグメント境界チェックを使用してローカルダウンロードを設定済みディレクトリ内に制限していましたが、camel-azure-storage-blob のダウンロードパスはその対応の対象外でした。ユーザーは、この問題を修正したバージョン 4.22.0 にアップグレードすることを推奨します。4.14.x LTS リリースストリームを使用している場合は、4.14.9 にアップグレードすることをお勧めします。4.18.x リリースストリームを使用している場合は、4.18.4 にアップグレードすることをお勧めします。すぐにアップグレードできないデプロイメントでは、regex エンドポイントオプションを使用してコンシューマーが処理する名前を制限してください。このオプションは、リストアップされた各 blob 名に対して完全文字列一致として適用され、単純な単一セグメント名のみが受け入れられ、パス区切り文字または親ディレクトリセグメントを含む名前はエクスチェンジが作成される前に除外されます。さらに prefix オプションを使用してサーバー側でリストを絞り込むこともできますが、両方が設定されている場合、regex が優先され prefix は無視されることに注意してください。あるいは、信頼できないコンテナーでは downloadBlobToFile オペレーションを避け、リモートのリストから取得したファイル名ではなく、ルート自身が制御するファイル名でルートからペイロードを書き込んでください。多層防御として、外部から書き込み可能なコンテナー内の blob 名は信頼できない入力として扱い、それらからローカルファイルシステムのパスを導出しないでください。
ソース
1責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。