Apache Storm Client vulnerability allows deserialization of untrusted state store data
Apache Storm Client before 3.1.0 deserializes untrusted data from state store with disabled Kryo class registration, enabling arbitrary code execution.
Deserialization of Untrusted Data in Apache Storm Redis State Provider
DefaultStateSerializer in Apache Storm persists state checkpoints using Kryo with disabled class registration and unsafe instantiation. An attacker with write access to a Redis-backed state store keyspace can inject serialized objects that execute code in the worker JVM on restore. This requires the non-default Redis provider and affects users with data-plane access to the store.
What to do: Upgrade to Apache Storm 3.1.0. Restrict network and credential access to the state store if unable to upgrade immediately.
| Product | Affected | Fixed in |
|---|---|---|
| Apache Storm | — | 3.1.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Description `DefaultStateSerializer`, used to persist and restore stateful bolt checkpoints, configured Kryo with class registration disabled and an instantiation strategy that constructs objects without invoking their constructors, then deserialized whatever bytes the state store returned. A party able to write to the topology's keyspace in the state store, for example a co-tenant of a shared Redis instance or anyone with network access to it, could therefore place a serialized object graph that executes code inside the worker JVM when the state is restored. This requires the Redis-backed state provider, which is not the default. Write access to a state-store key is a data-plane privilege; code execution in the worker JVM is not, so the two are not equivalent. Mitigation Upgrade to 3.1.0, where the state serializer requires registered classes. Note that this is a behaviour change for existing state: checkpoints written by an affected version may fail to restore, and a migration step may be required. Users who cannot upgrade immediately should restrict network and credential access to the state store to the cluster itself. Credit The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
Apache Storm Client before 3.1.0 deserializes untrusted data from state store with disabled Kryo class registration, enabling arbitrary code execution.
Today 1.5K readers · 2.4K views · 768 reads · all time 189K views