<?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/"><channel><title>Ethereum — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/ethereum/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 06 May 2026 19:57:36 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/ethereum/feed.xml" rel="self" type="application/rss+xml"/><item><title>Mezo L1 Bridge Vulnerability Leads to Potential ERC-20 Drain</title><link>https://feed.craftedsignal.io/briefs/2026-05-mezo-l1-bridge-drain/</link><pubDate>Wed, 06 May 2026 19:57:36 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-mezo-l1-bridge-drain/</guid><description>A vulnerability in the Mezo bridge allows for the potential full drain of the L1 bridge without changing the bridged balance on Mezo due to a stale StateDB overwrite, enabling a malicious user to steal ERC-20 tokens locked in the L1 bridge.</description><content:encoded><![CDATA[<p>A critical vulnerability in the Mezo bridge allows a malicious actor to potentially drain all ERC-20 tokens locked in the Layer 1 (L1) bridge without affecting the bridged balance on the Mezo network. This attack exploits an asymmetry in how the <code>bridgeOut</code> precompile handles BTC and ERC-20 tokens. The vulnerability exists because the outer StateDB overwrites the inner burn transaction with stale values. This restores the attacker&rsquo;s balance and allowance while the <code>AssetsUnlocked</code> event has already been persisted to the bridge store. The Ethereum sidecar then observes this event, attests the unlock on L1, and releases real tokens to the attacker, who can repeat the drain every block. This issue was found in the Mezo EVM and impacts ERC-20 token bridging. The fixed version of the validator client has been deployed.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker deploys a crafted contract on the Mezo network to interact with the <code>bridgeOut</code> precompile.</li>
<li>The attacker calls the <code>bridgeOut</code> precompile with an ERC-20 token, triggering the <code>burnERC20</code> function via <code>ExecuteContractCall</code>. This creates an inner StateDB where the token burn occurs.</li>
<li>Within the inner StateDB, the <code>burnFrom</code> function decreases the balance, supply, and allowance slots of the ERC-20 token.</li>
<li>The inner StateDB commits its changes to a cached context (<code>cachedCtx</code>) but does not propagate these changes to the outer StateDB&rsquo;s <code>dirtyStorage</code>.</li>
<li>The attacker triggers a <code>transfer(sink, 1)</code> in the same transaction, causing the outer StateDB to load the stale pre-burn balance from the base context (<code>baseCtx</code>).</li>
<li>The outer StateDB&rsquo;s <code>dirtyStorage</code> now contains the pre-burn allowance and stale balance, while the <code>AssetsUnlockedEvent</code> has been persisted to the bridge module&rsquo;s KV store.</li>
<li>During the <code>StateDB.Commit()</code> process, the stale allowance and balance slots in <code>dirtyStorage</code> overwrite the zeroed-out values from the inner burn, effectively erasing the burn.</li>
<li>The Ethereum sidecar observes the <code>AssetsUnlockedEvent</code> and calls <code>AttestBridgeOut</code> on the L1 MezoBridge contract, releasing real tokens to the attacker&rsquo;s L1 address. The attacker repeats this process per block to drain the bridge.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability poses a critical risk to the Mezo bridge, potentially leading to the theft of approximately $1,753,958.4 USD worth of assets held on the L1 bridge. Attackers can repeatedly exploit this vulnerability to drain ERC-20 tokens, including cbBTC, T, USDC, USDT, xSolvBTC, SolvBTC, FunctionBTC, USDe, swBTC, and DAI, without affecting their Mezo balance. This exploit threatens the integrity and trustworthiness of the Mezo bridge and the assets locked within it.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Implement detection rules to identify transactions interacting with the <code>bridgeOut</code> precompile and <code>ExecuteContractCall</code> that do not properly propagate state changes to the outer StateDB.</li>
<li>Monitor Ethereum L1 MezoBridge contract (0xF6680EA3b480cA2b72D96ea13cCAF2cFd8e6908c) for unexpected or anomalous withdrawal patterns.</li>
<li>Investigate all <code>AssetsUnlockedEvent</code> events to validate that corresponding balance and allowance changes have been correctly applied within the Mezo network before attesting unlocks on L1 as described in <code>x/bridge/keeper/assets_unlocked.go:104-163</code>.</li>
<li>Enable logging of state changes within the EVM, particularly focusing on the <code>Commit()</code> function at <code>x/evm/statedb/statedb.go:677-684</code> to detect potential stale overwrites.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>blockchain</category><category>smart-contract</category><category>bridge</category><category>state-overwrite</category></item></channel></rss>