<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Grpc (&gt;= 0.8.0, &lt; 1.0.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/grpc--0.8.0--1.0.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 25 Aug 2026 18:48:23 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/grpc--0.8.0--1.0.0/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Critical RCE and DoS Vulnerability in Elixir gRPC Package</title><link>https://feed.craftedsignal.io/briefs/2026-08-grpc-erlpack-rce/</link><pubDate>Tue, 25 Aug 2026 18:48:23 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-grpc-erlpack-rce/</guid><description>The GRPC.Codec.Erlpack decoder in the Elixir gRPC package is vulnerable to unauthenticated remote code execution and node-level denial of service due to insecure deserialization of untrusted gRPC payloads.</description><content:encoded><![CDATA[<p>The <code>grpc</code> package for Elixir (versions 0.4.0 through 0.9.x) contains a critical vulnerability in <code>GRPC.Codec.Erlpack.decode/2</code> that allows for unauthenticated remote code execution (RCE) and denial of service (DoS). The vulnerability stems from the use of <code>:erlang.binary_to_term/1</code> on raw gRPC message bodies without the mandatory <code>:safe</code> option. This function is used to deserialize data provided via the <code>application/grpc+erlpack</code> content type.</p>
<p>Because the deserialization process is unsafe, it permits the instantiation of arbitrary terms, including function objects (fun terms) and large numbers of atoms. An attacker can exploit this in two ways: by saturating the BEAM global atom table (which is capped at ~1 million entries) to crash the entire node, or by injecting serialized function terms that execute arbitrary code when subsequently invoked by the host application. This vulnerability is specific to environments where developers have explicitly registered <code>GRPC.Codec.Erlpack</code> in their gRPC server configuration.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a target gRPC server that has explicitly configured <code>GRPC.Codec.Erlpack</code> as a codec.</li>
<li>Attacker establishes a standard HTTP/2 connection to the gRPC service endpoint.</li>
<li>Attacker constructs a malicious gRPC payload serialized via <code>:erlang.term_to_binary</code> containing a fun term for RCE or repeated atom definitions for DoS.</li>
<li>Attacker sends an HTTP POST request to the gRPC endpoint with the header <code>Content-Type: application/grpc+erlpack</code>.</li>
<li>The server's <code>GRPC.Codec.Erlpack.decode/2</code> function parses the request body and materializes the unsafe terms into the server process memory.</li>
<li>For DoS, the accumulated atoms exhaust the BEAM virtual machine's global atom table, resulting in a node-wide crash.</li>
<li>For RCE, the malicious fun term is passed to a downstream Elixir call site (such as <code>Enum.map</code> or <code>Task.async</code>).</li>
<li>The host application executes the attacker-controlled code within the context of the server process.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows unauthenticated attackers to fully compromise the host server by executing arbitrary code with the privileges of the BEAM virtual machine process. Alternatively, attackers can force a complete denial of service by crashing the node through atom table exhaustion. This vulnerability affects any gRPC-based Elixir application that enables the Erlpack codec.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritize the immediate update of the <code>grpc</code> Elixir package to version 1.0.0 or later, which addresses this deserialization flaw. For environments that cannot immediately patch, remove <code>GRPC.Codec.Erlpack</code> from the list of registered codecs in your gRPC server configuration. Detection engineers should inspect server logs for any incoming requests utilizing the <code>application/grpc+erlpack</code> content type and verify if such usage is expected in the production environment.</p>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>denial-of-service</category><category>elixir</category><category>erlang</category><category>grpc</category><category>memory-exhaustion</category></item></channel></rss>