gRPC Erlpack Codec Deserialization Flaw Enables Node Crash and Potential RCE (CVE-2026-48853)
A security advisory (GHSA-grp7-v8xh-rj7h) discloses a vulnerability in the grpc Elixir/Erlang library's optional Erlpack codec, tracked as CVE-2026-48853. According to the advisory, GRPC.Codec.Erlpack.decode/2 calls :erlang.binary_to_term/1 directly on the raw gRPC message body without the :safe option, with no size limit or type validation. The advisory identifies two independent exploitation paths for any unauthenticated peer that can reach an affected endpoint: a denial-of-service via BEAM atom table exhaustion, and — if a decoded fun term reaches a call site that invokes it — remote code execution inside the server process. A public proof-of-concept is included in the advisory.
Why It Matters
The advisory states this affects grpc versions ≥ 0.4.0, but only servers that explicitly register GRPC.Codec.Erlpack in their codecs option are exposed — it is not enabled by default. Where it is enabled, the impact is severe: BEAM's global atom table is never garbage-collected and is bounded (roughly 1,048,576 entries), so a crash from atom exhaustion takes down the entire VM, not just the affected request or process — meaning all applications co-located on that node go down with it. The RCE path depends on application-specific code paths that invoke decoded terms, so its reach will vary by deployment, but the DoS path requires no special conditions beyond reachability and codec configuration.
What Defenders Should Do Now
- Search Elixir/Erlang service configurations for explicit registration of
GRPC.Codec.Erlpackin gRPC servercodecsoptions — this is the necessary precondition for exposure. - If found, prioritize applying the patch referenced in the advisory (patch commit
272a97a5) or removing the Erlpack codec if it isn't required. - At the network layer, consider monitoring or restricting gRPC traffic that sets
Content-Type: application/grpc+erlpack, since legitimate use of this codec is likely rare compared to the default codec. - Watch for unexplained BEAM/Erlang VM crashes or restarts on hosts running gRPC services, which could indicate attempted atom-exhaustion attacks.
- Review any code paths where decoded gRPC message values are passed into functions like
Enum.map,Task.async, or direct invocation, since these are the conditions the advisory cites for the RCE path.
This is developing intel based on a single vendor advisory published today; details on real-world exploitation, if any, are not yet available. See the original advisory for full technical details and the patch: GHSA-grp7-v8xh-rj7h.