<?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>ZenHive - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/zenhive/</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>Sat, 26 Sep 2026 02:07:06 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/zenhive/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>ZenHive mpp Package Gas Draining and DoS Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-09-mpp-gas-draining/</link><pubDate>Sat, 26 Sep 2026 02:07:06 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-mpp-gas-draining/</guid><description>The mpp Elixir package fails to validate client-supplied gas limits before broadcasting transactions as a fee-payer, allowing attackers to drain the server's wallet through repeated out-of-gas transaction failures.</description><content:encoded><![CDATA[<p>The mpp Elixir package (ZenHive/mpp), specifically versions 0.2.0 through 0.5.x, contains a critical vulnerability in its transaction broadcasting mechanism. When the server acts as the designated fee payer for client-initiated operations, it fails to validate whether the <code>gas_limit</code> provided by the client is sufficient to complete the transaction execution on the blockchain.</p>
<p>An attacker can exploit this by crafting a transaction with a <code>gas_limit</code> slightly lower than the required threshold for a successful operation. The server cosigns and broadcasts the transaction, which subsequently fails during execution due to out-of-gas conditions. Despite the transaction failure and the resulting state revert, the server's fee-payer wallet is still charged for the consumed gas. Because the attacker does not pay for this execution, they can automate this process across multiple clients to drain the server's funds, effectively performing a denial-of-service attack that prevents legitimate users from processing transactions.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker initializes a client instance capable of interacting with the mpp service.</li>
<li>The attacker identifies a target contract method that requires a known amount of gas (e.g., <code>transferWithMemo</code>).</li>
<li>The attacker constructs a transaction payload with a <code>gas_limit</code> set just below the threshold required for successful execution.</li>
<li>The attacker sends the malicious transaction payload to the mpp server, requesting the server to act as the fee-payer.</li>
<li>The server executes <code>broadcast_and_verify/7</code> in <code>mpp/methods/tempo.ex</code>, failing to perform a simulation or a minimum gas validation check before broadcasting.</li>
<li>The transaction is broadcast to the network; the EVM execution consumes the available gas and reverts.</li>
<li>The network charges the server's fee-payer wallet for the gas consumed during the failed execution.</li>
<li>The attacker repeats these steps to systematically deplete the server's wallet funds to achieve a permanent DoS state.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in the financial depletion of the server's wallet, causing a complete denial-of-service for all legitimate users relying on that wallet to pay for transaction fees. The attack is highly impactful because it requires only compute resources from the attacker to initiate, rather than requiring the attacker to deposit their own funds, making it a zero-cost DoS vector against infrastructure providers.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for development and infrastructure teams using mpp:</p>
<ul>
<li>Upgrade the mpp package to version 0.6.0 or later to ensure proper gas limit validation before transaction broadcasting.</li>
<li>Audit the <code>broadcast_and_verify/7</code> logic to ensure that <code>wait_for_confirmation = true</code> paths perform a pre-flight gas simulation using a robust, parameter-aware <code>eth_call</code>.</li>
<li>Implement server-side rate limiting on transaction requests to prevent the rapid-fire submission of intentionally failing transactions from the same source.</li>
<li>Implement monitoring for a high frequency of failed transactions originating from the same client ID or source IP, which may indicate an attempt to trigger this vulnerability.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>blockchain</category><category>elixir</category><category>vulnerability</category></item></channel></rss>