Memory exhaustion via compressed Erlang terms in the elixir-grpc Erlpack codec
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| elixir-grpc | grpc | unaffected |
|
||||||
| elixir-grpc | grpc | unaffected |
|
||||||
| elixir-grpc | grpc_core | unaffected |
|
||||||
| elixir-grpc | grpc_core | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Elixir-grpc | Grpc |
|
||||||||
| Elixir-grpc | Grpc |
|
||||||||
| Elixir-grpc | Grpc Core |
|
||||||||
| Elixir-grpc | Grpc Core |
|
Vendor Workaround
Remove GRPC.Codec.Erlpack from the server's codecs list if the codec is not needed. If the codec is needed, register a wrapper codec in its place. The wrapper implements the GRPC.Codec behaviour, returns "erlpack" from name/0, raises in decode/2 when the body starts with the bytes 131, 80 (the compressed term tag), and delegates all other calls to GRPC.Codec.Erlpack.
No CVSS v3.1
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
No EPSS score available.
Key SSVC decision points have not yet been added.
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in elixir-grpc grpc_core and grpc allows unauthenticated attackers to exhaust server memory via a compressed Erlang external term in a gRPC message body. GRPC.Codec.Erlpack.decode/2 (grpc_core/lib/grpc/codec/erlpack.ex, and lib/grpc/codec/erlpack.ex before the package split) passes the message body to :erlang.binary_to_term/2. That function inflates a compressed term in full before it returns. The codec sets no limit on the decoded size, and its type checks run only on the decoded term. The server's max_body_size limit counts the compressed bytes of the request. A request with Content-Type: application/grpc+erlpack can therefore make the server allocate a term much larger than the request body. This issue affects grpc: from 0.4.0 before 1.0.0; grpc_core: from 1.0.0 before 1.1.0. | |
| Title | Memory exhaustion via compressed Erlang terms in the elixir-grpc Erlpack codec | |
| First Time appeared |
Elixir-grpc
Elixir-grpc grpc Elixir-grpc grpc Core |
|
| Weaknesses | CWE-409 | |
| CPEs | cpe:2.3:a:elixir-grpc:grpc:*:*:*:*:*:*:*:* cpe:2.3:a:elixir-grpc:grpc_core:*:*:*:*:*:*:*:* |
|
| Vendors & Products |
Elixir-grpc
Elixir-grpc grpc Elixir-grpc grpc Core |
|
| References |
|
|
| Metrics |
cvssV4_0
|
Improper Handling of Highly Compressed Data (Data Amplification)