CVE Vulnerabilities

CVE-2017-12612

Deserialization of Untrusted Data

Published: Sep 13, 2017 | Modified: Apr 20, 2025
CVSS 3.x
7.8
HIGH
Source:
NVD
CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 2.x
7.2 HIGH
AV:L/AC:L/Au:N/C:C/I:C/A:C
RedHat/V2
RedHat/V3
Ubuntu

In Apache Spark 1.6.0 until 2.1.1, the launcher API performs unsafe deserialization of data received by its socket. This makes applications launched programmatically using the launcher API potentially vulnerable to arbitrary code execution by an attacker with access to any user account on the local machine. It does not affect apps run by spark-submit or spark-shell. The attacker would be able to execute code as the user that ran the Spark application. Users are encouraged to update to version 2.2.0 or later.

Weakness

The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

Affected Software

Name Vendor Start Version End Version
Spark Apache 1.6.0 (including) 1.6.0 (including)
Spark Apache 1.6.1 (including) 1.6.1 (including)
Spark Apache 1.6.2 (including) 1.6.2 (including)
Spark Apache 1.6.3 (including) 1.6.3 (including)
Spark Apache 2.0.0 (including) 2.0.0 (including)
Spark Apache 2.0.1 (including) 2.0.1 (including)
Spark Apache 2.0.2 (including) 2.0.2 (including)
Spark Apache 2.1.0 (including) 2.1.0 (including)
Spark Apache 2.1.1 (including) 2.1.1 (including)

Potential Mitigations

  • Make fields transient to protect them from deserialization.
  • An attempt to serialize and then deserialize a class containing transient fields will result in NULLs where the transient data should be. This is an excellent way to prevent time, environment-based, or sensitive variables from being carried over and used improperly.

References