Apache Spark, Apache Spark: RPC encryption defaults to unauthenticated AES-CTR mode, enabling man-in-the-middle ciphertext modification attacks
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 3.5.2, 3.4.4
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
This issue affects Apache Spark versions before 3.4.4, 3.5.2 and 4.0.0. Apache Spark versions before 4.0.0, 3.5.2 and 3.4.4 use an insecure default network encryption cipher for RPC communication between nodes. When spark.network.crypto.enabled is set to true (it is set to false by default), but spark.network.crypto.cipher is not explicitly configured, Spark defaults to AES in CTR mode (AES/CTR/NoPadding), which provides encryption without authentication. This vulnerability allows a man-in-the-middle attacker to modify encrypted RPC traffic undetected by flipping bits in ciphertext, potentially compromising heartbeat messages or application data and affecting the integrity of Spark workflows. To mitigate this issue, users should either configure spark.network.crypto.cipher to AES/GCM/NoPadding to enable authenticated encryption or enable SSL encryption by setting spark.ssl.enabled to true, which provides stronger transport security.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- org.apache.spark:spark-network-common_2.13
From 3.5.0 · fixed in 3.5.2; fixed in 3.4.4
- org.apache.spark:spark-network-common_2.12
From 3.5.0 · fixed in 3.5.2; fixed in 3.4.4
- pysparkPyPI
fixed in 3.4.4; From 3.5.0 · fixed in 3.5.2
- org.apache.spark:spark-network-common_2.13Maven
From 3.5.0 · fixed in 3.5.2
- org.apache.spark:spark-network-common_2.13Maven
fixed in 3.4.4
- org.apache.spark:spark-network-common_2.12Maven
fixed in 3.4.4
- org.apache.spark:spark-network-common_2.12Maven
From 3.5.0 · fixed in 3.5.2
- pysparkPyPI
fixed in 3.4.4
- pysparkPyPI
From 3.5.0 · fixed in 3.5.2