CVE-2026-78165
Apache Camel: Camel-Spring-Redis における Redis ペイロードのフィルタリングされていない Java デシリアライゼーション
- 公開済み
- 2026/10/19
- 更新済み
- 2026/10/20
- CNA の割り当て
- apache
- 観察された証拠
- 2026/10/17
プライマリ CVSS
cvelist · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H概要
Apache Camel Spring Redisコンポーネントにおける信頼できないデータのデシリアライズに関する脆弱性。この問題はApache Camelに影響します: 2.11.0から4.18.5より前、4.19.0から4.22.1より前。RedisConfiguration.getSerializerは、serializerオプションが設定されていない場合に、素のJdkSerializationRedisSerializerを遅延生成し、そのインスタンスがコンポーネントが実行するすべての読み取りに使用されていました。Springの実装はDeserializingConverterを介してDefaultDeserializerに委譲し、ConfigurableObjectInputStreamでバイトを読み取り、ストリームにjava.io.ObjectInputFilterを設定しないため、任意のシリアライズされたクラスグラフが実体化され、そのreadObjectメソッドが実行されました。RedisConsumer.setBodyは、購読されたチャネルに発行されたすべてのメッセージの生バイトに対してそのシリアライザを適用し、それはExchangeが構築される前、したがってルートロジックがメッセージを検査できる前であったため、購読されたチャネルに対してPUBLISHを発行できる攻撃者はデシリアライズのシンクに直接到達しました。同じデフォルトシリアライザがRedisConfiguration.createDefaultTemplateによって構築されたRedisTemplateを支えていたため、プロデューサの読み取りコマンドGET、HGET、HGETALL、HVALSはRedisキースペースに保存されたものを何でもデシリアライズし、SpringRedisIdempotentRepositoryもそのテンプレートを共有していました。カスタムのredisTemplateを設定してもコンシューマの経路は塞がれませんでした。なぜならRedisConsumer.setBodyはテンプレートに紐付けられたシリアライザではなくgetSerializerを直接読み取るため、独自のテンプレートにStringシリアライザを組み込んだデプロイでも、serializerオプションも設定しない限りコンシューマ側で露出したままでした。このコンポーネントはjava.io.ObjectInputStream自体を構築することがなかったため、フィルタされていないJavaデシリアライズに関するこれまでのCamelコードベースの調査では到達されませんでした。この挙動はコンポーネントの導入、すなわち2.11.0での最初のリリースにまで遡り、この修正まで変更されていませんでした。ユーザーはこの問題を修正するバージョン4.23.0へのアップグレードを推奨されます。4.22.xリリースストリームを使用しているユーザーは、4.22.1へのアップグレードを推奨されます。4.18.xリリースストリームを使用しているユーザーは、4.18.5へのアップグレードを推奨されます。4.14.xリリースストリーム以前はこの問題が解決される前にサポート終了となっており、修正は提供されないため、これらのラインのデプロイはサポート対象のリリースに移行する必要があります。直ちにアップグレードできないデプロイでは、JVM全体のjdk.serialFilterシステムプロパティを設定してください。影響を受けるコード経路はjava.io.ObjectInputStreamを介して読み取るためこれを尊重します。例えば -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!* です。または、serializerエンドポイントオプションをStringRedisSerializerなどJavaシリアライズを使用しないシリアライザに設定してください。ただし、これはカスタムのredisTemplateだけでなくserializerオプションとして設定する必要があることに注意してください。多層防御として、Redisインスタンスで認証を必須とし、購読されたチャネルに発行できるクライアントを制限し、Camelが消費するRedisインスタンスを信頼できないネットワークに公開しないでください。
ソース
CVE-2026-78165 の実行可能な概念実証(PoC)再現ツール。Apache Camel camel-spring-redis における Redis PUBLISH ペイロードの JDK デシリアライズがフィルタリングされていないことを実証します。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。